【问题标题】:MongoDB - fast count of documents associated with indexed keyMongoDB - 与索引键相关的文档的快速计数
【发布时间】:2019-06-05 19:43:24
【问题描述】:

我需要根据索引字段查询包含 100M 文档的 mongoDB(4.0 版)集合。 例如,如果我有一个用户集合,并且每个用户都有一个城市字段,它是一个字符串,并且该字段被索引,我想问有多少用户在城市字段中有一些确切的值 (db.users.count({address:"New York"}))。 我看到响应时间会根据结果的数量而变化,如果有 20M,它大约是 5 秒。 在 explain() 我看到它使用 COUNT 并且有索引名称

"stage" : "COUNT_SCAN"

"indexName" : "address_1"

我的问题是mongodb不保存与每个索引字段键相关的文档数量以便快速检索而无需扫描? 有没有快速检索这些信息的方法?

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

    你可以这样做:

    db.users.find({address: 'New York'}).count() 我认为它更快,因为你已经索引了address 键。我认为在 mongoDB 中不会将有关基于索引键的集合中有多少项目的信息保存在任何地方。只需使用索引键检索数据并执行.count() 就应该很快。

    【讨论】:

      【解决方案2】:

      不,它没有。 然而,另一个可能的改进:

      db.users.ensureIndex({address:1});
      db.users.find({{address: 'New York}).count();
      

      【讨论】:

        猜你喜欢
        • 2018-10-27
        • 2017-02-04
        • 1970-01-01
        • 1970-01-01
        • 2021-10-01
        • 1970-01-01
        • 2017-12-21
        • 1970-01-01
        • 2022-01-23
        相关资源
        最近更新 更多