【发布时间】:2012-04-01 19:51:00
【问题描述】:
我正在尝试设计一个简单的应用程序,其中我有两个实体 Notebook 和 Note。所以 Notebook 可以包含多个 Notes.In RDBMS 我可以有两个表并且有一对多 他们之间的关系。我不确定在 MongoDB 中是否应该采取两个集合 方法或者我应该在笔记本集合中嵌入笔记。你有什么建议?
【问题讨论】:
标签: mongodb
我正在尝试设计一个简单的应用程序,其中我有两个实体 Notebook 和 Note。所以 Notebook 可以包含多个 Notes.In RDBMS 我可以有两个表并且有一对多 他们之间的关系。我不确定在 MongoDB 中是否应该采取两个集合 方法或者我应该在笔记本集合中嵌入笔记。你有什么建议?
【问题讨论】:
标签: mongodb
使用名为 Notebook 的单个集合似乎是一个非常合理的情况,并且每个 Notebook 文档都包含嵌入的 Notes。您可以轻松地为嵌入的文档编制索引。
如果一个 Notebook 文档有一个 'notes' 键,而 value 是一个笔记列表:
{
"notes": [
{"created_on": Date(1343592000000), text: "A note."}
]
}
# create index
db.notebook.ensureIndex({"notes.created_on" : -1})
我的意见是尽可能多地尝试嵌入,然后选择通过 id 引用另一个集合作为第二个选项,当引用需要指向更通用的共享数据集并且可能会更改时。例如,许多其他集合引用的类别文档集合。并且类别可以随着时间的推移而更新。但在你的情况下,笔记应该始终属于笔记本
【讨论】:
您应该问问自己需要在其上运行什么样的查询。 “默认”方法是嵌入它们,但在某些情况下(这将取决于您计划如何使用它们)可以应用更相关的方法。所以简单的答案是“可能,但你应该考虑一下”:)
【讨论】: