对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

计算文档

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

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

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

本指南中的示例使用Atlas示例数据集sample_training数据库中的companies集合。 要从PHP应用程序访问权限此集合,请实例化一个连接到Atlas 集群的MongoDB\Client ,并将以下值分配给$collection变量:

$collection = $client->sample_training->companies;

要学习如何创建免费的MongoDB 部署并加载示例数据集,请参阅MongoDB 入门指南

使用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

用于该操作的读取偏好(read
preference)。要学习;了解更多信息,请参阅服务器手册中的读取偏好。类型: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

要为操作指定排序规则,请传递 $options大量参数,该参数将 collation 选项设置为操作方法。将 collation 选项分配给配置排序规则规则的大量。

下表描述了可以设立以配置排序规则的字段:

字段
说明

locale

(必需)指定 Unicode(ICU)区域设置设置的国际组件。有关支持的区域设置列表,请参阅MongoDB Server手册中的排序规则区域设置和默认参数。数据类型:

string

caseLevel

(可选)指定是否包括大小写比较。当设立为

true时,比较行为取决于strength 字段的值:

strength1


- 如果strength 为 ,2
PHP库将比较基本字符和大小写。

— 如果 为 ,则PHP库会比较基本字符、变音符号、其他从节点(secondary nodestrength

falsefrom replica set)差异和大小写。 — 如果 为任何其他值,则忽略此字段。当设立为 时, PHP库不包括强度级别12

的大小写比较。数据类型:bool
默认值:false

caseFirst

(可选)指定三级比较期间大小写差异的排序顺序。数据类型:

string
默认值:"off"

strength

(可选)指定要执行的比较级别,如 ICU 文档中所定义。数据类型:

int
默认值:3

numericOrdering

(可选)指定驾驶员是否将数字字符串作为数字进行比较。如果设立为

true,则PHP库将数字字符串作为数字进行比较。示例,在比较字符串“”和“”时,该库使用字符串的数值并将“”视为大于“”。如果设立为10 2102

false102102

,则PHP库将数字字符串作为字符串进行比较。示例,在比较字符串“”和“”时,该库一次比较一个字符,并将“”视为小于“”。有关更多信息,请参阅MongoDB Server手册中的排序规则限制。数据类型:

bool
默认值:false

alternate

(可选)指定库是否将空格和标点符号视为基本字符以进行比较。数据类型:

string
默认值:"non-ignorable"

maxVariable

(可选)指定当 alternate字段设立为"shifted" 时库认为可忽略的字符。数据类型:

string
默认值:"punct"

backwards

(可选)指定包含变音符号的字符串是否从后往前排序。数据类型:

bool
默认值:false

要学习;了解有关排序规则和每个字段可能值的更多信息,请参阅MongoDB Server手册中的排序规则条目。

您可以通过调用MongoDB\Collection::estimatedDocumentCount()方法来检索集合中文档数量的估计值。 该方法根据集合元数据估计文档数量,这可能比执行精确计数更快。

以下示例估计集合中的文档数量:

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

您可以通过传递指定选项值的大量作为参数来修改estimatedDocumentCount()方法的行为。 下表描述了可在大量中设立的选项:

选项
说明

comment


要附加到操作的注释。类型:任何有效的BSON类型

maxTimeMS


操作可以运行的最长时间(以毫秒为单位)。类型:integer

readConcern

用于该操作的读关注(read
concern)。要学习;了解更多信息,请参阅服务器手册中的读关注。类型:MongoDB\Driver\ReadConcern

readPreference

用于该操作的读取偏好(read
preference)。要学习;了解更多信息,请参阅服务器手册中的读取偏好。类型: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 文档: