我正在尝试设计一个简单的应用程序,其中我有两个实体Notebook和Note。因此,Notebook可以包含多个Notes。在RDBMS中,我可以有两个表,并且具有一对多 他们之间的关系。我不确定MongoDB是否不应该收集两个 方法或我应该在Notebook集合中嵌入注释。你会建议什么?
答案 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)
您应该问自己需要在哪种查询上运行。 “默认情况下”方法是嵌入它们,但有些情况(这将取决于您计划如何使用它们)更适用的关系方法。所以简单的答案是“可能,但你应该考虑一下”:)