文档菜单
文档首页
/ / /
PHP 库手册
/

统计文档数量

在本页

  • 概述
  • 示例数据
  • 检索准确计数
  • 计算所有文档的数量
  • 计算特定文档的数量
  • 自定义计数行为
  • 检索估计计数
  • 自定义估计计数行为
  • API 文档

在本指南中,您可以学习如何使用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文档

返回

从游标中访问数据

© . All rights reserved.