【问题标题】:MongoDB schema design -- Choose two collection approach or embedded documentMongoDB架构设计——选择两种收集方式或嵌入文档
【发布时间】:2012-04-01 19:51:00
【问题描述】:

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

【问题讨论】:

    标签: mongodb


    【解决方案1】:

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

    如果一个 Notebook 文档有一个 'notes' 键,而 value 是一个笔记列表:

    {
        "notes": [
            {"created_on": Date(1343592000000), text: "A note."}
        ]
    }
    
    # create index
    db.notebook.ensureIndex({"notes.created_on" : -1})
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-20
        • 1970-01-01
        相关资源
        最近更新 更多