(mongodb >=1.0.0)
MongoDB\Driver\Query::__construct — 创建新的查询
构造一个新的 MongoDB\Driver\Query,它是一个不可变的值对象,表示数据库查询。然后可以使用 MongoDB\Driver\Manager::executeQuery() 执行该查询。
filter
(array|object)The » 查询谓词。空谓词将匹配集合中的所有文档。
注意: 在评估查询条件时,MongoDB 会根据其自己的 » BSON 类型比较规则 对类型和值进行比较,这与 PHP 的 比较 和 类型转换 规则不同。当匹配特殊 BSON 类型时,查询条件应使用相应的 BSON 类(例如,使用 MongoDB\BSON\ObjectId 来匹配 » ObjectId)。
queryOptions
选项 | 类型 | 描述 |
---|---|---|
allowDiskUse | bool |
允许 MongoDB 使用临时磁盘文件来存储在处理阻塞排序操作时超过 100 兆字节系统内存限制的数据。 |
allowPartialResults | bool |
对于针对分片集合的查询,如果某些分片不可用,则返回来自 mongos 的部分结果,而不是抛出错误。 如果未指定,则回退到已弃用的 |
awaitData | bool | 与 "tailable" 选项一起使用,如果在数据末尾而不是返回无数据的情况下,暂时阻止游标上的 getMore 操作。在超时后,查询将正常返回。 |
batchSize | int |
在第一批中返回的文档数量。默认为 101。批次大小为 0 意味着将建立游标,但在第一批中不会返回任何文档。 在 3.2 之前的 MongoDB 版本中,查询使用旧版线协议 OP_QUERY,批次大小为 1 将关闭游标,无论匹配的文档数量如何。 |
collation | array|object |
» 校对 允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音符号的规则。在指定校对时, 如果未指定校对但集合具有默认校对,则操作将使用为集合指定的校对。如果未为集合或操作指定校对,MongoDB 将使用先前版本中使用的简单二进制比较进行字符串比较。 此选项在 MongoDB 3.4+ 中可用,如果为旧版服务器版本指定,将在执行时导致异常。 |
comment | mixed |
帮助通过数据库分析器、currentOp 输出和日志跟踪操作的任意注释。 对于 MongoDB 4.4+,注释可以是任何有效的 BSON 类型。早期服务器版本仅支持字符串值。 如果未指定,则回退到已弃用的 |
exhaust | bool |
以多个“更多”包的形式全速向下传输数据,假设客户端将完全读取所有查询的数据。当您正在拉取大量数据并且知道要全部拉取时,速度更快。注意:客户端不允许不读取所有数据,除非它关闭连接。 此选项不受 MongoDB 3.2+ 中的 find 命令支持,并将强制驱动程序使用旧版线协议版本(即 OP_QUERY)。 |
explain | bool |
如果为 如果未指定,则回退到已弃用的 此选项不受 MongoDB 3.2+ 中的 find 命令支持,仅在使用旧版线协议版本(即 OP_QUERY)时才会受到尊重。应在 MongoDB 3.0+ 上使用 » explain 命令。 |
hint | string|array|object |
索引规范。指定索引名称作为字符串或索引键模式。如果指定,则查询系统将仅考虑使用提示索引的计划。 如果未指定,则回退到已弃用的 |
let | array|object |
参数名称和值的映射。值必须是常量或封闭表达式,不引用文档字段。然后可以在聚合表达式上下文中访问参数作为变量(例如 此选项在 MongoDB 5.0+ 中可用,如果为旧版服务器版本指定,将在执行时导致异常。 |
limit | int |
要返回的文档的最大数量。如果未指定,则默认为无限制。限制为 0 等同于不设置限制。 负限制将被解释为正限制,并将 |
max | array|object |
特定索引的排他上限。 如果未指定,则回退到已弃用的 |
maxAwaitTimeMS | int |
表示服务器在无数据可用时阻塞 getMore 操作的时间限制(以毫秒为单位)的正整数。此选项应仅与 |
maxScan | int |
警告
此选项已弃用,不应使用。 表示在执行查询时扫描的文档或索引键的最大数量的正整数。 如果未指定,则回退到已弃用的 |
maxTimeMS | int |
在游标上处理操作的累积时间限制(以毫秒为单位)。MongoDB 在最早的以下中断点中止操作。 如果未指定,则回退到已弃用的 |
min | array|object |
特定索引的包含下限。 如果未指定,则回退到已弃用的 |
modifiers | array | » 元运算符 修改查询的输出或行为。建议使用命名选项,弃用这些运算符。 |
noCursorTimeout | bool | 防止服务器在非活动期间(10 分钟)后使空闲游标超时。 |
oplogReplay | bool |
副本集的内部使用。要使用 oplogReplay,您必须在过滤器中包含以下条件
[ 'ts' => [ '$gte' => <timestamp> ] ]
|
projection | array|object |
The » 投影规范 用于确定在返回的文档中包含哪些字段。 如果您使用 ODM 功能 将文档反序列化为其原始 PHP 类,请确保在投影中包含 __pclass 字段。这是反序列化工作所必需的,如果没有它,扩展将(默认情况下)返回一个 stdClass 对象。 |
readConcern | MongoDB\Driver\ReadConcern |
要应用于操作的读取关注。默认情况下,将使用来自 MongoDB 连接 URI 的读取关注。 此选项在 MongoDB 3.2+ 中可用,如果为旧的服务器版本指定,则在执行时会导致异常。 |
returnKey | bool |
如果为 如果没有指定,则回退到已弃用的 |
showRecordId | bool |
确定是否返回每个文档的记录标识符。如果为 如果没有指定,则回退到已弃用的 |
singleBatch | bool | 确定在第一批之后是否关闭游标。默认为 false 。 |
skip | int | 要跳过的文档数量。默认为 0。 |
snapshot | bool |
警告
此选项已弃用,不应使用。 阻止游标由于插入的写入操作而多次返回同一个文档。 如果没有指定,则回退到已弃用的 |
sort | array|object |
用于对结果进行排序的排序规范。 如果没有指定,则回退到已弃用的 |
tailable | bool | 为带帽集合返回可尾部追溯的游标。 |
版本 | 描述 |
---|---|
PECL mongodb 1.14.0 |
添加了 |
PECL mongodb 1.8.0 |
添加了 已弃用 |
PECL mongodb 1.5.0 |
已弃用 |
PECL mongodb 1.3.0 |
添加了 |
PECL mongodb 1.2.0 |
添加了 将 删除了已弃用的 |
PECL mongodb 1.1.0 | 添加了 "readConcern" 选项。 |
示例 #1 MongoDB\Driver\Query::__construct() 示例
<?php
/* 只选择作者为 "bjori" 且浏览量至少为 100 的文档 */
$filter = [
'author' => 'bjori',
'views' => [
'$gte' => 100,
],
];
$options = [
/* 仅返回匹配文档中的以下字段 */
'projection' => [
'title' => 1,
'article' => 1,
],
/* 按浏览量降序返回文档 */
'sort' => [
'views' => -1
],
];
$query = new MongoDB\Driver\Query($filter, $options);
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY);
$cursor = $manager->executeQuery('databaseName.collectionName', $query, $readPreference);
foreach($cursor as $document) {
var_dump($document);
}
?>