选项1:
{
_id: ObjectId,
text: String,
author: {
id: ObjectId,
name: String,
email: String
}
}
选项2:
{
_id: ObjectId,
text: String,
authorId: Id,
author: {
name: String,
email: String
}
}
我有Post文档的架构,类似于上面的选项1。有一个单独的“作者”集合,上面的作者ID字段正在引用它。 “姓名”和“电子邮件”在此重复;有关作者集合的更多作者信息。
我对Post集合的一个查询是查询某个作者ID的所有帖子。
就性能而言,最好选择选项2,因为作者ID密钥位于文档的“顶级”位置?如果您按照选项1中的嵌套键搜索文档有什么区别吗?
答案 0 :(得分:4)
不,它不会产生显着的性能差异。 MongoDb可以很好地索引“顶级”键或“嵌套键”。 MongoDb可以在内部读取完整的BSON对象,从而有效地到达它的任何部分。 在这里阅读: http://www.mongodb.org/display/DOCS/BSON
您可以尝试创建2个测试集合,并在查询的字段上创建索引。 表现将是相同的。