db.collection.estimatedDocumentCount()
带有驱动程序的 MongoDB
本页介绍了 mongosh
方法。要查看 MongoDB 驱动程序中的等效方法,请参阅您的编程语言的相应页面:
定义
行为
机制
db.collection.estimatedDocumentCount()
不采用查询筛选器,而是使用元数据返回集合的计数。
对于视图:
没有元数据。
通过在视图定义中执行聚合管道来计算文档计数。
不存在快速估计的文档计数。
分片集群
在分片集群上,所产生的计数将无法正确剔除孤立文档。
非正常关闭
本节仅适用于集合。
非正常关闭后,计数可能不正确。
在使用 Wired Tiger 存储引擎非正常关闭 mongod
后,db.collection.estimatedDocumentCount()
报告的计数统计数据可能不准确。
偏差的大小取决于在最后一个检查点和非正常关闭之间执行的插入、更新或删除操作的次数。检查点通常每 60 秒出现一次。但是,如果 mongod
实例使用了非默认的 --syncdelay
设置,则检查点出现的次数可能会增多或减少。
在 mongod
的每个集合上运行 validate
,以在非正常关闭之后恢复统计信息。
非正常关闭后:
客户端断开连接
从 MongoDB 4.2 开始,如果在操作完成之前,发出 db.collection.estimatedDocumentCount()
的客户端断开连接,MongoDB 将使用killOp
将 db.collection.estimatedDocumentCount()
标记为终止。
计数和事务
在事务中使用 db.collection.estimatedDocumentCount()
时,生成的计数不会过滤任何未提交的多文档事务。
例子
以下示例使用 db.collection.estimatedDocumentCount()
来检索 orders
集合中所有文档的计数:
db.orders.estimatedDocumentCount({})