Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance MongoDB:通过嵌套键与顶级键进行查找_Performance_Mongodb_Schema - Fatal编程技术网

Performance MongoDB:通过嵌套键与顶级键进行查找

Performance MongoDB:通过嵌套键与顶级键进行查找,performance,mongodb,schema,Performance,Mongodb,Schema,选项1: { _id: ObjectId, text: String, author: { id: ObjectId, name: String, email: String } } { _id: ObjectId, text: String, authorId: Id, author: { name: String, email: String } } 选项2: { _id: ObjectId, text:

选项1:

{
  _id: ObjectId,
  text: String,
  author: {
    id: ObjectId,
    name: String,
    email: String
  }
}
{
  _id: ObjectId,
  text: String,
  authorId: Id,
  author: {
    name: String,
    email: String
  }
}
选项2:

{
  _id: ObjectId,
  text: String,
  author: {
    id: ObjectId,
    name: String,
    email: String
  }
}
{
  _id: ObjectId,
  text: String,
  authorId: Id,
  author: {
    name: String,
    email: String
  }
}
我有一个类似于上面选项1的Post文档模式。有一个单独的“Author”集合,上面的Author ID字段正在引用该集合。“姓名”和“电子邮件”已在此处复制;作者收藏中有更多作者信息

我对帖子集合的一个查询是按某个作者ID查询所有帖子


就性能而言,是否最好使用选项2,因为作者ID键位于文档的“顶层”?如果像选项1中那样使用嵌套键搜索文档,会有什么不同吗?

不会,这不会对性能产生显著影响。MongoDb可以很好地索引“顶级”键或“嵌套键”。 MongoDb可以在内部读取完整的BSON对象,因此可以高效地访问它的任何部分。 请看这里:

您可以尝试创建2个测试集合,并在查询的字段上创建索引。 演出将是一样的