MongoDB\GridFS\Bucket::find()
定义
参数
$filter
: array|object- 指定要查询的文档的过滤器条件。
$options
: array指定所需选项的数组。
名称类型描述allowDiskUse布尔型启用写入临时文件。当设置为true
时,查询可以将数据写入dbPath
目录下的_tmp
子目录。allowPartialResults布尔型对于针对分片集合的查询,当某些分片不可用而不是抛出错误时,从mongos
返回部分结果。batchSize整数第一批次返回的文档数。默认为
101
。batchSize为0
表示已建立游标,但第一批次不会返回任何文档。与之前的线协议版本不同,对于
find
命令,batchSize为1
不会关闭游标。codecMongoDB\Codec\DocumentCodec排序数组|对象注释混合游标类型整数指示要使用的游标类型。
cursorType
支持以下值MongoDB\Operation\Find::NON_TAILABLE
(默认值)MongoDB\Operation\Find::TAILABLE
提示字符串|数组|对象要使用的索引。指定索引名称作为字符串或索引键模式作为文档。如果指定,则查询系统将仅考虑使用提示索引的计划。
新功能版本1.2.
let数组|对象参数名称和值的映射。值必须是常量或封闭表达式,不能引用文档字段。然后可以在聚合表达式上下文中作为变量访问参数(例如
$$var
)。此功能不支持5.0之前的版本,并且如果在执行时使用,将引发异常。
新功能版本1.13.
limit整数返回的最大文档数。如果未指定,则默认为无限制。限制为
0
与设置无限制等效。负限制类似于正限制,但会在返回一个结果批次后关闭游标。因此,在负限制的情况下,如果限制的结果集不适合单个批次,则接收到的文档数将少于指定的限制。通过传递负限制,客户端指示服务器它不会通过getMore请求后续批次。
max数组|对象特定索引的排它性上限。
新功能版本1.2.
maxAwaitTimeMS整数表示服务器阻塞getMore操作的时间限制(以毫秒为单位),如果无数据可用。此选项仅应在cursorType为TAILABLE_AWAIT时使用。
新功能版本1.2.
maxScan整数执行查询时扫描的最大文档或索引键数。
已弃用自版本1.4.
新功能版本1.2.
maxTimeMS整数处理光标操作的总时间限制(以毫秒为单位)。MongoDB会在最早的下一次中断点终止操作。
最小值数组|对象特定索引的包含下限。
新功能版本1.2.
修饰符数组|对象元操作符,用于修改查询的输出或行为。现在推荐使用命名选项代替这些操作符的使用。noCursorTimeout布尔型防止服务器在空闲光标在一段时间(10分钟)后超时。oplogReplay布尔型内部使用,用于副本集。要使用
oplogReplay
,必须在过滤器中包含以下条件{ ts: { $gte: <timestamp> } } MongoDB\BSON\Timestamp类参考描述了如何用PHP表示MongoDB的BSON时间戳类型。
已弃用自版本1.7.
投影数组|对象readConcernreadPreference读取偏好,用于操作。默认为桶的读取偏好。
returnKey布尔型如果为真,则只返回结果文档中的索引键。
新功能版本1.2.
session与操作关联的客户端会话。
新功能版本1.3.
showRecordId布尔型确定是否返回每个文档的记录标识符。如果为真,则在返回的文档中添加字段
$recordId
。新功能版本1.2.
skip整数要跳过的文档数量。默认为0
。sort数组|对象结果的排序规范。snapshot布尔型防止游标因中间的写操作而返回重复的文档。
已弃用自版本1.4.
新功能版本1.2.
typeMaparray应用于游标的 类型映射,用于将 BSON 文档转换为 PHP 值。默认为桶的类型映射。
返回值
一个 MongoDB\Driver\Cursor 对象。
错误/异常
MongoDB\Exception\UnsupportedException
如果使用了所选服务器不支持的功能(例如 collation
,readConcern
,writeConcern
)。
MongoDB\Exception\InvalidArgumentException
与参数或选项解析相关的错误。
MongoDB\Driver\Exception\RuntimeException 用于扩展级别的其他错误(例如连接错误)。
行为
When evaluating query criteria, MongoDB compares types and values according to its own comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class in the extension (e.g. use MongoDB\BSON\ObjectId to match an 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) } } }