目前我的应用程序中有两个模型 - 用户和评论。简化结构如下:
用户
{
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
字段。但后来我将用户名存储在两个地方 - 用户集合和评论集合。
这里最好的方法是什么?
答案 0 :(得分:0)
如果每个用户的评论数量非常大,那么将这些评论作为user
集合的子文档放在一起并不是一个好的选择。它不会提高效率。最好的选择是将user_id
放入comment
集合并在该字段上创建索引。