db.collection.estimatedDocumentCount()
带驱动程序的 MongoDB
本页面提供 mongosh
方法的相关信息。要查看 MongoDB 驱动程序中的等效方法,请参阅编程语言的相应页面:
定义
兼容性
此方法可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 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({})