我们举一个聊天室的例子。
我应该创建2个集合:Room
和Messages
,并将房间详细信息(标题,说明)与消息(正文/日期/作者)分开存储? Messages集合将有一个名为“Room”的字段,该字段链接到Room的ObjectId。
或
我应该创建一个名为Room的集合。然后在Room里面,有一系列消息?
最佳做法是什么?你会做什么?
答案 0 :(得分:0)
我倾向于你的第一选择。除了16MB可能太小的事实(我在我的日子里看到一些非常繁忙的聊天室),单独存储消息可以让你有更大的灵活性。房间甚至不需要知道与之关联的消息 - 只需创建一次,然后根据需要通过Room
ID查询消息。
答案 1 :(得分:0)
这里已多次询问架构设计问题。请研究,因为解决方案总是一样的 - 您只需要考虑一下并将它们应用到您自己的用例中:
MongoDB Schema Design - Real-time Chat
MongoDB Schema Design - Many small documents or fewer large documents?
在答案中用你自己问题的Y代替X真的不应该那么难。
此外:标准文档也适用(并且对您的问题非常明确):