定义
参数
$filter
: array|object- 指定要查询的文档的筛选条件。
$options
: array指定所需选项的数组。
名称类型说明allowDiskUse
布尔
允许写入临时文件。设置为
true
时,查询可以将数据写入到dbPath
目录的_tmp
子目录中。allowPartialResults
布尔
对于针对分片集合的查询,如果某些分片不可用,则从
mongos
返回部分结果,而不是引发错误。batchSize
整型
第一批中要返回的文档数量。默认值为
101
。batchSize 为0
是指将建立游标,但第一批不会返回任何文档。与之前的传输协议版本不同,
find
命令的 batchSize 为1
不会关闭游标。编解码器
MongoDB\Codec\DocumentCodec
Encode Data with Type Codecs 用于对文档进行编码或解码。此选项与
typeMap
选项互斥。默认为存储桶的编解码器。 默认
codec
选项的继承优先于typeMap
选项的继承。1.17 版本中的新增功能。
排序规则
数组|对象
comment
混合
cursorType
整型
表示要使用的游标类型。
cursorType
支持以下值:MongoDB\Operation\Find::NON_TAILABLE
(默认)MongoDB\Operation\Find::TAILABLE
提示
字符串|数组|对象
要使用的索引。将索引名称指定为字符串或将索引键模式指定为文档。如果指定,查询系统将只考虑使用提示索引的计划。
版本 1.2 中的新增内容。
let
数组|对象
参数名称和值的映射。值必须是常量或不引用文档字段的封闭表达式。然后可以在聚合表达式上下文中将参数作为变量进行访问(例如
$$var
)。MongoDB 服务器 6.0 及更早版本不支持此功能。如果使用,服务器将在执行时返回异常。
1.13 版本中的新增功能。
limit
整型
要返回的最大文档数。如果未指定,则默认为无限制。限制为
0
相当于不设限制。负限值与正限值相似,但在返回单个批次结果后将关闭游标。因此,对于负限值,如果有限的结果集不适合单个批次,则收到的文档数量将小于指定的限值。通过传递负限值,客户端可向服务器表明它不会通过 getMore 请求后续批次。
Max
数组|对象
特定索引的独占上限。
版本 1.2 中的新增内容。
maxAwaitTimeMS
整型
正整数,表示服务器在没有可用数据时阻止 getMore 操作的时间限制(以毫秒为单位)。仅当 cursorType 为 TAILABLE_AWAIT 时才应使用此选项。
版本 1.2 中的新增内容。
maxTimeMS
整型
处理游标操作的累计时间限制(以毫秒为单位)。MongoDB 最早会在中断点之后中止操作。
min
数组|对象
特定索引的包含下限。
版本 1.2 中的新增内容。
noCursorTimeout
布尔
防止服务器在闲置期(10 分钟)后使空闲游标超时。
投影
数组|对象
事务外的
readPreference
读取要用于操作的偏好。 默认为存储桶的读取偏好(read preference)。
returnKey
布尔
如果为 true,则只返回结果文档中的索引键。
版本 1.2 中的新增内容。
会话
与操作相关联的客户端会话。
1.3 版本中的新增功能。
showRecordId
布尔
确定定是否返回每个文档的记录标识符。如果为 true,则在返回的文档中添加字段
$recordId
。版本 1.2 中的新增内容。
跳过
整型
要跳过的文档数量。默认值为
0
。sort
数组|对象
对结果排序的排序规范。
typeMap
阵列
类型映射 应用游标,决定如何将BSON文档转换为PHP值。默认为存储桶的类型映射。
Return Values
A MongoDB\ 驱动程序\Cursor 对象。
错误/异常
MongoDB\Exception\UnsupportedException
,如果所选服务器使用了选项但不支持选项(例如collation
、readConcern
、writeConcern
)。
MongoDB\Exception\InvalidArgumentException
用于与参数或选项解析相关的错误。
MongoDB\ 驱动程序\Exception\RuntimeException 对于扩展级别的其他错误(例如连接错误)。
行为
在评估查询条件时,MongoDB 会根据自己 的 比较规则来BSON types 比较类型和值,这不同于 的PHP 比较 和 类型杂技 规则。匹配特殊BSON类型时,查询条件应使用相应的 BSON类 在扩展(例如使用 MongoDB\ BSON\ObjectId 以匹配 ObjectId )。
示例
$bucket = (new MongoDB\Client)->test->selectGridFSBucket(); $stream = fopen('php://temp', 'w+b'); fwrite($stream, "foobar"); rewind($stream); $bucket->uploadFromStream('b', $stream); $cursor = $bucket->find( ['length' => ['$lte' => 6]], [ 'projection' => [ 'filename' => 1, 'length' => 1, '_id' => 0, ], 'sort' => ['length' => -1], ] ); var_dump($cursor->toArray());
而输出将类似如下所示:
array(1) { [0]=> object(MongoDB\Model\BSONDocument)#3015 (1) { ["storage":"ArrayObject":private]=> array(2) { ["filename"]=> string(1) "b" ["length"]=> int(6) } } }