统计文档数量
概述
在本指南中,您可以学习如何使用MongoDB PHP库来检索集合中文档数量的准确值和估计值。以下方法用于在集合中计算文档
MongoDB\Collection::countDocuments()
:返回匹配查询过滤器或存在于集合中的文档的确切数量MongoDB\Collection::estimatedDocumentCount()
:返回集合中的文档估计数量
示例数据
本指南中的示例使用来自 Atlas 示例数据集 的 companies
集合和 sample_training
数据库。要从您的PHP应用程序中访问此集合,请实例化一个连接到Atlas集群的 MongoDB\Client
并将以下值分配给您的 $collection
变量
$collection = $client->sample_training->companies;
要了解如何创建免费的MongoDB Atlas集群并加载数据集,请参阅 Atlas 入门指南。
获取精确计数
使用MongoDB\Collection::countDocuments()
方法来统计集合中的文档数量。要统计匹配特定搜索条件的文档数量,请将查询过滤器传递给countDocuments()
方法。
要了解如何指定查询,请参阅指定查询指南。
统计所有文档
要返回集合中所有文档的计数,请将空查询过滤器数组传递给countDocuments()
方法,如下例所示
$result = $collection->countDocuments([]); echo 'Number of documents: ', $result;
Number of documents: 9500
统计特定文档
要返回匹配特定搜索条件的文档数量,请将查询过滤器传递给 countDocuments()
方法。
以下示例计算 founded_year
字段值为 2010
的文档数量
$result = $collection->countDocuments(['founded_year' => 2010]); echo 'Number of companies founded in 2010: ', $result;
Number of companies founded in 2010: 33
自定义计数行为
您可以通过传递一个指定选项值的数组来修改 countDocuments()
方法的行为。以下表格描述了您可以设置的某些选项,以自定义计数操作
选项 | 描述 |
---|---|
collation | 操作中使用的排序。 类型: array|object |
hint | 用于操作的索引。 类型: string|array|object |
comment | 要附加到操作的注释。 类型: 任何有效的BSON类型 |
limit | 要计数的最大文档数。此值必须是一个正整数。 类型: integer |
maxTimeMS | 操作可以运行的最大毫秒数。 类型: integer |
skip | 在计数文档之前要跳过的文档数。 类型: integer |
readPreference | 用于操作的读取偏好。有关更多信息,请参阅服务器手册中的 读取偏好。 类型: MongoDB\Driver\ReadPreference |
以下示例使用 countDocuments()
方法来计算具有 number_of_employees
字段值为 50
的文档数量,并指示操作计数最多 100
个结果
$result = $collection->countDocuments( ['number_of_employees' => 50], ['limit' => 100] ); echo 'Number of companies with 50 employees: ', $result;
Number of companies with 50 employees: 100
检索估算文档数量
您可以通过调用 MongoDB\Collection::estimatedDocumentCount()
方法来检索集合中文档数量的估算值。该方法根据集合元数据估算文档数量,可能比进行精确计数更快。
以下示例估计集合中文档的数量
$result = $collection->estimatedDocumentCount(); echo 'Estimated number of documents: ', $result;
Estimated number of documents: 9500
自定义估算数量行为
您可以通过传递一个指定选项值的数组作为参数来修改 estimatedDocumentCount()
方法的行为。以下表格描述了您可以在数组中设置的选项
选项 | 描述 |
---|---|
comment | 要附加到操作的注释。 类型: 任何有效的BSON类型 |
maxTimeMS | 操作可以运行的最大毫秒数。 类型: integer |
readConcern | 用于操作的读取关注点。有关更多信息,请参阅服务器手册中的 读取关注点。 类型: MongoDB\Driver\ReadConcern |
readPreference | 用于操作的读取偏好。有关更多信息,请参阅服务器手册中的 读取偏好。 类型: MongoDB\Driver\ReadPreference |
session | 与操作关联的客户端会话。 类型: MongoDB\Driver\Session |
以下示例使用 estimatedDocumentCount()
方法返回集合中文档数量的估算值,并设置操作的超时时间为 1000
毫秒。
$result = $collection->estimatedDocumentCount(['maxTimeMS' => 1000]); echo 'Estimated number of documents: ', $result;
Estimated number of documents: 9500
API 文档
要了解更多关于本指南中讨论的任何方法或类型的信息,请参阅以下API文档