MongoDB架构设计 - 选择两种收集方法或嵌入式文档

时间:2012-04-01 19:51:00

标签: mongodb

我正在尝试设计一个简单的应用程序,其中我有两个实体Notebook和Note。因此,Notebook可以包含多个Notes。在RDBMS中,我可以有两个表,并且具有一对多 他们之间的关系。我不确定MongoDB是否不应该收集两个 方法或我应该在Notebook集合中嵌入注释。你会建议什么?

2 个答案:

答案 0 :(得分:3)

使用名为Notebook的单个集合似乎是一个非常合理的情况,每个Notebook文档都包含嵌入的Notes。您可以轻松地在嵌入文档上编制索引。

如果Notebook文档有“注释”键,则值为注释列表:

{
    "notes": [
        {"created_on": Date(1343592000000), text: "A note."}
    ]
}

# create index
db.notebook.ensureIndex({"notes.created_on" : -1})

我的意见是尝试尽可能地嵌入,然后选择通过id引用另一个集合作为第二个选项,当引用需要是一个更通用的数据集,这些数据是共享的并且可能会更改。例如,许多其他集合引用的类别文档的集合。该类别可以随时更新。但在您的情况下,笔记应始终属于笔记本

答案 1 :(得分:0)

您应该问自己需要在哪种查询上运行。 “默认情况下”方法是嵌入它们,但有些情况(这将取决于您计划如何使用它们)更适用的关系方法。所以简单的答案是“可能,但你应该考虑一下”:)