我需要在db设计方面的帮助,在我的应用程序中有一个注释和回复,注释将作为每个数组项的子文档存储在数组中,但是我有点不知道在哪里存储答复,我在考虑两种情况。
(1)将答复存储在同一注释子文档中的嵌入式数组中。
comments : [
{
commentId: ObjectId("XXXX"),
...
replies : [
{
replyId : ObjectId("XXX")
...
}
]
}
](2)新数组(答复),每个元素都是答复的子-document。
{
comments :[ .....] ,
replies: [
{
commentId: ObjectId("XXX"),
replies : [ ...]
}
]
}提前感谢
发布于 2018-07-01 06:54:37
方法1
Pros:检索非常快速,并与MongoDB文档的概念和最佳实践保持一致。只有需要更新的文档,才会更快。
Cons:文档大小将随着每个活动而增加,可能达到16 to的硬限制。如果你确信评论和回复是非常有限的,那么它是好的。
方法2
Pros:如果您想加载对用户请求的评论的回复,这将是很好的,因为带有注释的文档将是轻量级的,并且在数据大小上将受到很大的控制。
Cons:使用MongoDB 4.0,我们有多文档事务支持,以前不支持这种支持,如果您能够更新回复,就会创建问题,但是在更新注释错误时发生了错误。第二,每次更新你还没有更新2份文件。
因此,方法1或2都取决于您的用例。如果注释和答复是有限的,则方法1必须更好地使用MongoDB4.0事务支持的其他明智的方法2。
https://stackoverflow.com/questions/51118842
复制相似问题