use*_*624 8 mongodb database-schema mongoose-schema
我将基于mongodb设计一个群聊应用程序,有两种模式设计选择,一种设计为一个群组聊天消息的文档,另一种设计为所有群组消息的文档。
在第一个选项中,它可以显示为
var ChatMessageSchema = new Schema({
fromUserId: ObjectId,
toTroupeId: ObjectId,
text: String,
sent: Date
}
Run Code Online (Sandbox Code Playgroud)
在第二个选项中,它可以显示为
var ChatMessageSchema = new Schema({
toTroupeId: ObjectId,
chats:[
fromUserId: ObjectId,
text: String,
sent: Date
]
}
Run Code Online (Sandbox Code Playgroud)
两种设计都有优点和缺点,第二种选择的缺点是它几乎无法在用户上建立索引并搜索来自用户的消息,并且太多的组消息可能会迫使创建多个文档。
第一个选项似乎更合理,因为如果我们可以正确地建立索引,它可以允许基于groupid或userid搜索消息。
但我想知道,由于该组中有成千上万的消息,这意味着一个组中将有相应的成千上万的文档,这会影响数据库性能吗?
关于这些设计选择的任何想法,是第一个选择是最佳选择,还是如何对其进行优化?