Mongodb评论,回复数据库分析

时间:2018-06-30 21:57:57

标签: database mongodb database-design

我需要数据库设计方面的帮助 在我的应用程序中,有一个注释和答复,注释将作为每个数组项的子文档存储在一个数组中,但是我对于将答复存储在何处有些困惑,我在考虑两种情况< / p>

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

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

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

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

预先感谢

1 个答案:

答案 0 :(得分:0)

方法1

专家:检索非常快,并且与MongoDB文档概念和最佳实践保持一致。仅需要更新的文档,它将更快

缺点:文档大小将随每次活动而增加,并且可能达到16MB的硬限制。如果您确定评论和回复非常有限,那就可以了。

方法2

专家:如果您希望根据用户的请求加载评论以进行评论,那将是一件好事,因为带有评论的文档的权重很小,并且可以控制数据大小

缺点:在MongoDB 4.0中,我们提供了多文档事务支持,如果您能够更新答复但在更新Comment错误时发生了问题,则该支持以前会引起问题。第二个是每次更新您仍然不更新2个文档。

因此方法1或2都取决于您的用例。如果评论和回复受到限制,则在采用Mongodb 4.0事务支持的情况下,方法1最好是其他方法2。