【问题标题】:How would I design this schema in MongoDB?我将如何在 MongoDB 中设计此模式?
【发布时间】:2011-08-15 01:17:00
【问题描述】:

我们以聊天室为例。

我是否应该创建 2 个集合:RoomMessages,并将房间详细信息(标题、描述)与消息(正文/日期/作者)分开存储? Messages 集合将有一个名为“Room”的字段,该字段链接到 Room 的 ObjectId。

我应该创建 1 个名为 Room 的集合吗?然后在 Room 里面,有一个消息数组?

最佳做法是什么?你会怎么做?

【问题讨论】:

标签: mongodb database nosql


【解决方案1】:

我倾向于你的第一选择。除了 16MB 可能太小(我曾经见过一些非常繁忙的聊天室)这一事实之外,单独存储消息可以为您提供更大的灵活性。房间甚至不需要知道与之关联的消息 - 只需创建一次并根据需要通过您的 Room id 查询消息。

【讨论】:

    【解决方案2】:

    架构设计问题在这里被问过无数次。请研究一下,因为解决方案总是相同的 - 您只需考虑片刻并将它们应用到您自己的用例中:

    MongoDB Schema Design - Real-time Chat

    Mongodb schema design

    MongoDB Schema Design - Many small documents or fewer large documents?

    用你自己的问题的 Y 代替答案中的 X 真的不应该那么难。

    此外:标准文档也适用(并且对您的问题非常明确):

    http://www.mongodb.org/display/DOCS/Schema+Design

    【讨论】:

    • Blackmoon 这不是答案。这是一个评论。并且强烈反对所有 mongodb 模式设计问题都是相同的。对于每一种正确的方式,在 mongodb 中实现模式有十几种错误的方式。我很少看到关于 SO 的答案可以很好地回答这些问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2023-03-03
    • 2018-02-13
    • 2015-06-27
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    相关资源
    最近更新 更多