如何在MongoDB中有效地设计和获取相关文档?

时间:2016-03-22 13:55:03

标签: mongodb nosql

目前我的应用程序中有两个模型 - 用户和评论。简化结构如下:

用户

{
    id : "01",
    username : "john"
}

注释

{
    id : "001",
    body : "this is the comment"
}

现在我想将用户与他们的评论联系起来。来自SQL世界,我想到的第一件事就是在评论文档中添加user_id字段,然后使用JOIN,但我认为这不是效率方面的最佳解决方案。

另一种解决方案可能是在用户的文档中嵌入评论:

{
    id : "01",
    username : "john",
    comments : [
        {
        id : "001",
        body : "this is the comment"
        }
    ]
}

但我会经常查询评论,例如显示过去24或48小时内的所有评论。除了评论,我还想显示用户名。

我当然可以在评论文档中添加username字段。但后来我将用户名存储在两个地方 - 用户集合和评论集合。

这里最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

如果每个用户的评论数量非常大,那么将这些评论作为user集合的子文档放在一起并不是一个好的选择。它不会提高效率。最好的选择是将user_id放入comment集合并在该字段上创建索引。