MongoDB-快速计算与索引键关联的文档

时间:2019-06-05 10:41:43

标签: mongodb mongodb-query

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

"stage" : "COUNT_SCAN"

"indexName" : "address_1"

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

2 个答案:

答案 0 :(得分:0)

您可以这样做:

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

答案 1 :(得分:0)

不,不是。 但是,另一种可能的改进:

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