【问题标题】:Projection in MongoDbMongoDb 中的投影
【发布时间】:2022-01-08 17:20:52
【问题描述】:

我正在学习 MongoDb,我想到了一个关于投影的问题。

当我们对某些字段进行投影时,MongoDB 是做什么的? 它会读取整个文档,然后删除一些字段并返回结果,还是不会读取排除的字段并返回查询中提到的字段。

例如如果我有一个包含 4 个字段和 3 个数组(每个大小约为 10)的文档,我只想要 4 个字段而不是数组。 MongoDB 会读取整个文档并删除数组还是只读取 4 个字段?

如果是第一种情况,如果文档中的数组变大,执行时间或延迟会有什么不同?

【问题讨论】:

    标签: mongodb mongodb-query projection


    【解决方案1】:

    文档在存储上是压缩的,所以mongo需要先读取文档,解压,只获取过滤器中指定的字段。 这里的诀窍是,当您搜索某些字段时,您需要对它们进行索引,以便在内存中更快地进行搜索,并避免 mongo 一个接一个地读取所有文档并检查搜索到的字段。 如果您只需要更快地访问那些字段,最好将所有这些字段都放在复合索引中,并通过所谓的“覆盖查询”搜索它们,那么您将只在内存中搜索并只从内存中获取而不访问存储,这将更快。 此外,在许多情况下,相同的文档会被多次搜索,因此 mongoDB 预测算法会将这些文档缓存在内存中以便更快地访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      相关资源
      最近更新 更多