MongoDB:按嵌套键与顶级键查找

evi*_*ery 4 performance schema mongodb

选项1:

{
  _id: ObjectId,
  text: String,
  author: {
    id: ObjectId,
    name: String,
    email: String
  }
}
Run Code Online (Sandbox Code Playgroud)

选项 2:

{
  _id: ObjectId,
  text: String,
  authorId: Id,
  author: {
    name: String,
    email: String
  }
}
Run Code Online (Sandbox Code Playgroud)

我有一个类似于上面选项 1 的 Post 文档模式。有一个单独的“作者”集合,上面的作者 ID 字段引用了该集合。“姓名”和“电子邮件”在此处重复;Author 集合中有更多的作者信息。

我对 Post 集合的查询之一是通过某个作者 ID 查询所有帖子。

在性能方面,是否最好使用选项 2,因为作者 ID 密钥位于文档的“顶级”?如果您像选项 1 那样通过嵌套键搜索文档有什么区别吗?

Dhr*_*hak 5

不,它不会产生显着的性能差异。MongoDb 可以很好地索引“顶级”键或“嵌套键”。MongoDb 可以在内部读取完整的 BSON 对象,从而有效地访问它的任何部分。在这里阅读:http : //www.mongodb.org/display/DOCS/BSON

您可以尝试创建 2 个测试集合,并在查询的字段上创建索引。性能将是相同的。