获取MongoDB索引中的文档数

获取MongoDB索引中的文档数,mongodb,indexing,Mongodb,Indexing,根据标题,我想知道是否有办法获得MongoDB索引中的文档数量 明确地说,我不是在寻找以下任何一项: 如何获取集合中的文档数--.count() 如何获取索引的大小--.stats() 索引引用其集合中的所有文档,除非索引是a或a。从文档中: 稀疏索引仅包含具有索引字段的文档的条目,即使索引字段包含空值也是如此。索引跳过任何缺少索引字段的文档。索引是“稀疏的”,因为它不包括集合的所有文档。相比之下,非稀疏索引包含集合中的所有文档,为不包含索引字段的文档存储空值 部分索引仅对集合中满足指定筛选表

根据标题,我想知道是否有办法获得MongoDB索引中的文档数量

明确地说,我不是在寻找以下任何一项:

  • 如何获取集合中的文档数--
    .count()
  • 如何获取索引的大小--
    .stats()

索引引用其集合中的所有文档,除非索引是a或a。从文档中:

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

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

所以

  • 非稀疏和非部分索引的答案是
    db.collection.count()

  • 稀疏索引和部分索引的答案可以通过运行没有条件的查询来推断,暗示该索引,然后计算结果。例如:

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

或许也值得一提。不过,它们与稀疏索引属于同一类别。此外,对于稀疏/部分索引,我建议查看定义并对筛选条件发出计数查询,而不是沿着提示路径。@dnickless good call re partial index,我已更新了答案,谢谢。