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