Docs 菜单
Docs 主页
/ / /
PHP 库手册
/

计算文档

在此页面上

  • Overview
  • 样本数据
  • 检索准确的计数
  • 对所有文档进行计数
  • 对特定文档进行计数
  • 自定义计数行为
  • 检索估计计数
  • 自定义估计计数行为
  • API 文档

在本指南中,您可以学习;了解如何使用MongoDB PHP库来检索集合中文档数量的准确估计数。 以下方法对集合中的文档进行计数:

  • MongoDB\Collection::countDocuments():返回与查询过滤匹配或存在于集合中的文档的确切数量

  • MongoDB\Collection::estimatedDocumentCount():返回集合中的估计文档数

本指南中的示例使用 Atlas示例数据集sample_training数据库中的companies集合。 要从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

The collation to use for the operation.
Type: array|object

hint

The index to use for the operation.
Type: string|array|object

comment

The comment to attach to the operation.
Type: any valid BSON type

limit

The maximum number of documents to count. This value must be a positive integer.
Type: integer

maxTimeMS

The maximum amount of time in milliseconds that the operation can run.
Type: integer

skip

The number of documents to skip before counting documents.
Type: integer

readPreference

The read preference to use for the operation. To learn more, see Read Preference in the Server manual.
Type: 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

The comment to attach to the operation.
Type: any valid BSON type

maxTimeMS

The maximum amount of time in milliseconds that the operation can run.
Type: integer

readConcern

The read concern to use for the operation. To learn more, see Read Concern in the Server manual.
Type: MongoDB\Driver\ReadConcern

readPreference

The read preference to use for the operation. To learn more, see Read Preference in the Server manual.
Type: MongoDB\Driver\ReadPreference

session

The client session to associate with the operation.
Type: MongoDB\Driver\Session

以下示例使用estimatedDocumentCount()方法返回集合中文档数量的估计值,并将操作超时设置为1000毫秒:

$result = $collection->estimatedDocumentCount(['maxTimeMS' => 1000]);
echo 'Estimated number of documents: ', $result;
Estimated number of documents: 9500

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档:

后退

从游标访问数据