获取 MongoDB 索引中文档的数量

4
根据标题,我想知道在 MongoDB 索引中获取文档数量的方法。
明确一下,我不是在寻找以下内容之一:
- 获取集合中文档数量的方法 - .count()。 - 获取索引大小的方法 - .stats()
1个回答

6
索引引用其集合中的所有文档,除非该索引是稀疏索引部分索引。来自文档:

稀疏索引仅包含具有索引字段的文档条目,即使索引字段包含 null 值。索引跳过任何缺少索引字段的文档。该索引“稀疏”,因为它不包括集合中的所有文档。相比之下,非稀疏索引包含集合中的所有文档,对于那些不包含索引字段的文档存储 null 值。

部分索引仅索引满足指定筛选表达式的集合中的文档

所以...

  • The answer for non sparse and non partial indexes is db.collection.count()

  • The answer for sparse and partial indexes could be inferred by running a query with no criteria, hinting on that index and then counting the results. For example:

      db.collection.find().hint('index_name_here').count()
    

1
可能值得一提的是部分索引。虽然它们与稀疏索引属于同一类别。 - dnickless
2
此外,对于稀疏/部分索引,我建议查看定义并针对过滤条件发出计数查询,而不是走提示路径。 - dnickless
@dnickless 不错的建议,关于部分索引,我已经更新了答案,谢谢。 - glytching

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接