选项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文档的模式,类似于上面的
{ _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中的嵌套键搜索文档有什么区别吗?
不,它不会产生显着的性能差异. MongoDb可以很好地索引“顶级”键或“嵌套键”.MongoDb可以在内部读取完整的BSON对象,从而有效地到达它的任何部分.
在这里阅读:
http://www.mongodb.org/display/DOCS/BSON
您可以尝试创建2个测试集合,并在查询的字段上创建索引.表现将是相同的.