MongoDB - 如何组织集合

3

这里有一个一般性的问题 - 我正在自学MongoDB,为了正确入手,我想知道如何针对一个样例预算应用程序来组织集合。

和任何家庭预算一样,我会有“分类”,比如家庭、汽车,下面还有子类别,比如房贷和车贷。

每个账单都有到期日、最低应付金额、预计付款、预计付款日期、实际付款和实际付款日期。

每个账单都是要付给某个人的,例如家庭中,房贷可能要付给美国银行,而美国银行可能会有联系信息(电话、邮寄地址)。

从表格结构转换到Mongo有点困惑,所以我希望得到任何关于如何处理这个问题的意见。


首先阅读数据建模文档:http://docs.mongodb.org/manual/core/data-modeling/。有很多选项,不是所有选项都适合您的要求。 - WiredPrairie
1个回答

2
问题比较普遍。总的来说,以下原则适用于MongoDB中的模式设计:
  • 您的集合布局应受到良好建模原则的指导。使用MongoDB,您可以拥有更接近数据对象结构的模式,而不是关系型数据的“投影”。

  • 您的集合布局应受到数据访问模式(有时可能与前面的语句冲突)的指导。设计您的模式,以便尽可能少地查询所需信息,而不将太多不需要的数据加载到您的应用程序中。

  • 通常情况下,您可以并且应该“去规范化”以实现上述两个目标。这对于MongoDB来说并不是一件坏事。规范化的缺点是更新变得更加昂贵,您需要确保维护一致性。但是这些缺点往往被更自然的建模和更高效的读取效率所抵消。

根据您上述的描述,似乎您已经想到了一个相当“关系型”的模型。试着摆脱它,并以新的思路解决问题。考虑对象,而不是表格。


那么,思考“客观”是我的问题所在。在所有这些领域中,我都不确定什么是根对象。我在交易本身和收款人之间犹豫不决。 - ChadM
“客观”思考意味着尽可能自然地思考 :) 通常并不存在单一的解决方案。尝试几种不同的方法,并通过系统的典型操作来了解如何使用给定模型实现它们。感觉最自然(优雅,我敢说)的那个是正确的。当然,它也应该很快 :) - drmirror

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接