Mongodb评论,回复数据库分析



我需要数据库设计方面的帮助 在我的应用程序中有一个注释和回复,注释将作为每个数组项的子文档存储在数组中,但我对在哪里存储回复有点困惑,我正在考虑两种情况

(1( 将回复存储在同一注释子文档的嵌入式数组中

comments : [
{ 
commentId: ObjectId("XXXX"),
...
replies : [
{ 
replyId : ObjectId("XXX") 
...
} 
]
} 
]

(2(新数组(回复(,每个元素都是回复的子文档

{
comments :[ .....] ,
replies: [ 
{
commentId: ObjectId("XXX"), 
replies : [ ...]
}
]
}

提前致谢

方法 1

优点: 检索非常快,并且与MongoDB文档概念和最佳实践保持一致。只需要更新文档,它会更快

缺点:文档大小会随着每个活动而增长,并可能达到16MB的硬限制。 如果您确定评论和回复非常有限,那很好。

方法2

优点:如果您想加载回复以对用户的请求进行评论,那会很好,因为带有注释的文档将很轻量级,并且可以很好地控制数据大小

缺点:使用MongoDB 4.0,我们有多文档事务支持,这是以前不支持的,如果您能够更新回复但在更新时发生注释错误,则曾经会产生问题。 第二,每次更新你仍然不更新2个文档。

因此,方法 1 或 2 都取决于您的用例。如果评论和回复有限,方法1将是必须更好的其他明智的方法2与Mongodb 4.0事务支持。

最新更新