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

Retrieve Data

在本指南中,您可以学习;了解如何使用MongoDB PHP库通过读取操作从MongoDB集合中检索数据。 您可以对集合调用MongoDB\Collection::find()或MongoDB\Collection::findOne()方法,以检索与一设立条件匹配的文档。

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

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

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

MongoDB PHP库包含两种从集合中检索文档的方法:MongoDB\Collection::findOne() 和 MongoDB\Collection::find()。这些方法采用 查询筛选条件 并返回一个或多个匹配的文档。查询筛选条件指定驱动程序用于检索查询中的文档的搜索条件。

提示

如需学习;了解有关查询筛选器的更多信息,请参阅“指定查询”指南。

要查找集合中的单个文档,请调用MongoDB\Collection::findOne()方法并传递查询过滤,其中指定要查找的文档条件。

findOne()方法返回array 、 object或null值。 如果查询过滤与文档匹配,该方法将返回包含该文档的array|object实例。 返回类型取决于typeMap选项的值。 如果查询过滤与任何文档均不匹配,该方法将返回null 。

提示

要学习;了解有关findOne()选项(例如typeMap )的更多信息,请参阅本指南的“修改查找行为”部分。

如果查询过滤匹配多个文档,则findOne()方法会从检索到的结果中返回第一个匹配的文档。

以下示例使用findOne()方法查找name字段值为'LinkedIn'的第一个文档:

$document = $collection->findOne(['name' => 'LinkedIn']);
echo json_encode($document), PHP_EOL;

提示

排序顺序

如果未指定排序条件,findOne() 方法将按自然顺序返回磁盘上的第一份文档。

要查找集合中的多个文档,请将查询筛选器传递给 MongoDB\Collection::find() 方法,其中指定要检索的文档条件。

以下示例使用find()方法查找founded_year字段值为1970的所有文档:

$results = $collection->find(['founded_year' => 1970]);

find()方法返回一个MongoDB\Driver\Cursor实例,您可以对其进行迭代以查看匹配的文档。 游标是一种机制,允许应用程序迭代数据库结果,同时在给定时间仅在内存中保存其中的子集。 当find()方法返回大量文档时,游标非常有用。

您可以使用foreach循环遍历游标中的文档,如以下示例所示:

foreach ($results as $doc) {
echo json_encode($doc), PHP_EOL;
}

注意

查找所有文档

要查找集合中的所有文档,请将空筛选器传递给find()方法:

$cursor = $collection->find([]);

您可以通过将指定选项值的大量作为参数传递来修改MongoDB\Collection::find()和MongoDB\Collection::findOne()方法的行为。 下表描述了您可以在大量中设立的一些选项:

选项
说明

batchSize

查询结果中每个批处理可返回的最大文档数量。默认情况下,find 命令的初始批处理大小为 101 个文档,后续批处理的最大大小为 16 核心字节 (MiB)。此选项可以实施小于 16 MiB 的限制,但不能实施大于 MiB 的限制。如果将 batchSize 设置为导致批处理大于 16 MiB 的限制,则此选项无效。
类型:integer

collation

用于操作的排序规则。默认值为为集合指定的排序规则。要学习;了解更多信息,请参阅本页的排序规则部分。类型:
array|object

comment

要添加到操作的注释。
类型:任何 BSON 类型

cursorType

用于操作的游标类型。默认值为 MongoDB\Operation\Find::NON_TAILABLE。
类型:MongoDB\Operation\Find

limit

操作可以返回的最大文档数量。
类型:integer

skip

返回结果之前要跳过的文档数。
类型:integer

sort

操作返回匹配文档的顺序。
类型:array|object

typeMap

应用于游标的类型映射,它决定如何将 BSON 文档转换为 PHP 值。默认值为集合的类型映射。
类型:array

以下示例使用find()方法查找number_of_employees字段值为1000的所有文档。 该示例使用limit选项返回最多5结果:

$results = $collection->find(
['number_of_employees' => 1000],
['limit' => 5],
);
foreach ($results as $doc) {
echo json_encode($doc), PHP_EOL;
}

有关选项的完整列表,请参阅findOne()和find()参数的API文档。

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

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

字段
说明

locale

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

string

caseLevel

(可选)指定是否包含大小写比较。

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

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

- 如果strength 为2 ,则 PHP
库比较基本字符、变音符、其他从节点差异和大小写。

- 如果strength 为任何其他值,则忽略此字段。

当设置为 false 时,PHP 库不包含强度级别 1 或 2 的大小写比较。

数据类型:bool
默认值:false

caseFirst

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

数据类型:string
默认:"off"

strength

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

int
默认值:3

numericOrdering

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

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

false,则PHP库将数字字符串作为字符串进行比较。示例,在比较字符串10 2102""

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

bool
默认值:false

alternate

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

数据类型:string
默认:"non-ignorable"

maxVariable

(可选)指定当 alternate 字段设置为 "shifted" 时,库认为可忽略的字符。

数据类型:string
默认值:"punct"

backwards

(可选)指定包含变音符号的字符串是否从字符串的后部到前部排序。

数据类型:bool
默认:false

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

如需学习;了解有关查询筛选器的更多信息,请参阅“指定查询”指南。

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