MongoDB\Database::aggregate()
1.5 版本中的新增功能。
定义
MongoDB\Database::aggregate()
运行不需要根本的集合的指定管理/诊断管道。 有关集合数据的聚合,请参阅
MongoDB\Collection::aggregate()
。function aggregate( array|Pipeline $pipeline, array $options = [] ): Traversable
参数
$pipeline
:大量|管道- 指定聚合管道操作。您可以在
MongoDB\Builder\Pipeline
实例或大量中包含聚合阶段。 $options
: array指定所需选项的数组。
名称类型说明allowDiskUse
布尔
允许写入临时文件。设置为
true
时,聚合阶段可以将数据写入到dbPath
目录中的_tmp
子目录。batchSize
整型
查询结果中返回的每个批处理中的最大文档数。默认下,
aggregate
命令的初始批处理大小为101
个文档,后续每个批处理的最大大小为 16 兆字节 (MiB)。此选项可以实施小于 16 MiB 的限制,但不能执行大于 MiB 的限制。如果将batchSize
设立为导致批量大于 16 MiB 的限制,则此选项无效。batchSize 为
0
表示将建立游标,但第批处理不会返回任何文档。这对于从aggregate
快速返回游标或失败结果可能很有用,而无需执行大量的服务器端工作。bypassDocumentValidation
布尔
编解码器
MongoDB\Codec\DocumentCodec
用于对文档进行编码或解码的编解码器。此选项与
typeMap
选项互斥。1.17 版本中的新增功能。
排序规则
数组|对象
comment
混合
解释
布尔
指定是否返回有关管道处理的信息。
提示
字符串|数组|对象
要使用的索引。将索引名称指定为字符串或将索引键模式指定为文档。如果指定,查询系统将只考虑使用提示索引的计划。
let
数组|对象
参数名称和值的映射。值必须是常量或不引用文档字段的封闭表达式。然后可以在聚合表达式上下文中将参数作为变量进行访问(例如
$$var
)。MongoDB 服务器 6.0 及更早版本不支持此功能。如果使用,服务器将在执行时返回异常。
1.9 版本中的新功能。
maxTimeMS
整型
处理游标操作的累计时间限制(以毫秒为单位)。MongoDB 最早会在中断点之后中止操作。
事务外的
读取关注以用于操作。 默认为数据库的读关注。
readPreference
读取要用于操作的偏好。 默认为数据库的读取偏好。
会话
与操作相关联的客户端会话。
typeMap
阵列
类型映射 应用于游标,决定如何将 BSON 文档转换为 PHP 值。默认为数据库的类型映射。
writeConcern
写入用于操作的关注。 默认为数据库的写关注。
Return Values
A MongoDB\Driver\Cursor 或 ArrayIterator 对象。在这两种情况下,返回值均为 Traversable。
错误/异常
MongoDB\Exception\UnexpectedValueException
,如果来自服务器的命令响应格式错误。
MongoDB\Exception\UnsupportedException
,如果所选服务器使用了选项但不支持选项(例如collation
、readConcern
、writeConcern
)。
MongoDB\Exception\InvalidArgumentException
用于与参数或选项解析相关的错误。
MongoDB\ 驱动程序\Exception\RuntimeException 对于扩展级别的其他错误(例如连接错误)。
示例
以下聚合示例使用$currentOp
聚合管道阶段列出所有正在运行的命令,然后筛选此列表以仅显示正在运行的命令操作。
$database = (new MongoDB\Client)->admin; $cursor = $database->aggregate( [ ['$currentOp' => []], ['$match' => ['op' => 'command']], ] );