参考 > 参考 > mongo Shell方法 > 收集方法 > db.collection.count()
db.collection.
count
(查询,选项)¶mongo
壳法
此页面记录了mongo
shell方法,并且
没有引用MongoDB Node.js驱动程序(或任何其他驱动程序)方法。对于相应的MongoDB驱动程序API,请改为参考您特定的
MongoDB驱动程序文档。
注意
与4.0功能兼容的MongoDB驱动程序弃用各自的光标和收集count()
的API,取而代之的是新的API countDocuments()
和estimatedDocumentCount()
。有关给定驱动程序的特定API名称,请参阅驱动程序文档。
返回与find()
集合或视图查询匹配的文档数
。该
db.collection.count()
方法不执行
find()
操作,而是计算并返回与查询匹配的结果数。
重要
db.collection.count()
没有查询谓词的方法,因为如果没有查询谓词,该方法将基于集合的元数据返回结果,这可能会导致近似计数。特别是,
参数 | 类型 | 描述 |
---|---|---|
query |
文献 | 查询选择条件。 |
options |
文献 | 可选的。用于修改计数的其他选项。 |
该options
文档包含以下字段:
领域 | 类型 | 描述 |
---|---|---|
limit |
整数 | 可选的。要计算的最大文件数。 |
skip |
整数 | 可选的。计数前要跳过的文档数。 |
hint |
字符串或文件 | 可选的。索引名称提示或查询规范。 |
maxTimeMS |
整数 | 可选的。允许查询运行的最长时间。 |
readConcern |
串 |
若要使用关注级别 您可以 为确保单个线程可以读取其自己的写入, 要使用的关注度 3.2版中的新功能。 |
collation |
文献 | 可选的。 指定 用于操作的排序规则。 归类允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。 排序规则选项具有以下语法: 指定排序规则时,该 如果未指定排序规则,但是集合具有默认排序规则(请参阅参考资料 如果没有为集合或操作指定排序规则,则MongoDB使用先前版本中使用的简单二进制比较进行字符串比较。 您不能为一个操作指定多个排序规则。例如,您不能为每个字段指定不同的排序规则,或者如果对排序执行查找,则不能对查找使用一种排序规则,而对排序使用另一种排序规则。 3.4版的新功能。 |
count()
等价于
db.collection.find(query).count()
构造。
在分片群集上,如果存在孤立文档或
正在进行块迁移,则db.collection.count()
没有查询谓词的计数可能导致计数
不准确。
为避免这些情况,请在分片群集上使用以下
db.collection.aggregate()
方法:
您可以使用$count
舞台来计数文档。例如,以下操作对集合中的文档进行计数:
该$count
阶段等效于以下
$group
+ $project
序列:
也可以看看
$collStats
返回基于集合的元数据的近似计数。
考虑具有以下索引的集合:
执行计数时,在以下情况下,MongoDB仅可以使用索引返回计数:
例如,以下操作可以仅使用索引返回计数:
但是,如果查询可以使用索引,但是查询谓词不能访问单个连续的索引键范围,或者查询还包含索引外部字段的条件,那么除了使用索引之外,MongoDB还必须阅读文档返回计数。
在这种情况下,在初次读取文档期间,MongoDB会将文档分页到内存中,以便随后进行相同计数操作的调用将具有更好的性能。
mongod
使用Wired Tiger存储引擎不正常关闭后,所报告的计数统计信息
count()
可能不准确。
漂移量取决于在最后一个检查点与异常关闭之间执行的插入,更新或删除操作的数量。检查点通常每60秒出现一次。但是,mongod
使用非默认--syncdelay
设置运行的实例可能具有或多或少的频繁检查点。
validate
在mongod
不正常关机后,对上的每个集合运行以恢复正确的统计信息。
注意
这一精度损失仅适用于count()
那些操作不包括查询谓词。
从MongoDB 4.2开始,如果发出db.collection.count()
断开连接的客户端在操作完成之前断开连接,则MongoDB将标记db.collection.count()
为终止(即killOp
在操作上)。