MongoDB模式设计——选择两种收集方法或嵌入式文档

MongoDB模式设计——选择两种收集方法或嵌入式文档,mongodb,Mongodb,我正试图设计一个简单的应用程序,其中我有两个实体笔记本和笔记。所以笔记本可以包含多个注释。在RDBMS中,我可以有两个表和一对多 他们之间的关系。在MongoDB中,我不确定我是否应该选择两个系列 或者我应该在笔记本集合中嵌入注释。您有什么建议?使用一个名为“笔记本”的集合似乎是完全合理的情况,每个笔记本文档都包含嵌入式笔记。您可以轻松地对嵌入文档进行索引 如果笔记本文档具有“notes”键,且值为注释列表: { "notes": [ {"created_on": Dat

我正试图设计一个简单的应用程序,其中我有两个实体笔记本和笔记。所以笔记本可以包含多个注释。在RDBMS中,我可以有两个表和一对多 他们之间的关系。在MongoDB中,我不确定我是否应该选择两个系列
或者我应该在笔记本集合中嵌入注释。您有什么建议?

使用一个名为“笔记本”的集合似乎是完全合理的情况,每个笔记本文档都包含嵌入式笔记。您可以轻松地对嵌入文档进行索引

如果笔记本文档具有“notes”键,且值为注释列表:

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

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

我的意见是尽可能多地尝试和嵌入,然后选择通过id引用另一个集合,作为第二个选项,当引用需要是共享的、可能会更改的更一般的数据集时。例如,许多其他集合引用的类别文档集合。并且该类别可以随时间更新。但是在你的情况下,一个笔记应该永远属于一本笔记簿。你应该问问自己需要在上面运行什么样的查询。“默认情况下”的方法是嵌入它们,但在某些情况下(这取决于您计划如何使用它们),更相关的方法是适用的。因此,简单的答案是“可能,但你应该考虑一下”: