MongoDB\Database::aggregate()
新增自版本1.5.
定义
MongoDB\Database::aggregate()
执行指定的admin/diagnostic pipeline,它不需要底层集合。有关对集合数据的聚合,请参阅
MongoDB\Collection::aggregate()
.function aggregate( array $pipeline, array $options = [] ): Traversable
参数
$pipeline
: 数组- 指定一个 聚合管道 操作。
$options
: 数组指定所需选项的数组。
名称类型描述allowDiskUse布尔型启用写入临时文件。当设置为true
时,聚合阶段可以将数据写入dbPath
目录下的_tmp
子目录。batchSize整数指定游标批量大小,这将应用于初始的
aggregate
命令和任何后续的getMore
命令。这决定了从服务器返回的每个响应中返回的最大文档数。0
的 batchSize 是特殊的,它只适用于初始的aggregate
命令;后续的getMore
命令将使用服务器的默认批量大小。这可能在快速返回游标或从aggregate
中失败,而不进行大量服务器端工作时很有用。bypassDocumentValidation布尔型codecMongoDB\Codec\DocumentCodec用于编码或解码文档的编解码器。此选项与
typeMap
选项互斥。新增自版本1.17.
collation数组|对象comment混合类型explain布尔型指定是否返回管道处理的详细信息。hint字符串|数组|对象要使用的索引。指定索引名作为字符串或索引键模式作为文档。如果指定,则查询系统将仅考虑使用提示索引的计划。
let数组|对象参数名称和值的映射。值必须是常数或封闭表达式,不引用文档字段。参数然后可以在聚合表达式上下文中作为变量访问(例如
$$var
)。此功能不支持早期于 5.0 的服务器版本,如果使用,则会在执行时引发异常。
新增自版本1.9.
maxTimeMS整数处理游标上操作的总时间限制(以毫秒为单位)。MongoDB 会在最早的后续 中断点 处中止操作。
readConcern为操作使用 读取关注。默认为数据库的读取关注。
readPreference为操作使用 读取偏好。默认为数据库的读取偏好。
session与操作关联的客户端会话。
typeMaparray应用于游标的 类型映射,它决定了BSON文档如何转换为PHP值。默认为数据库的类型映射。
writeConcern为操作使用 写入关注。默认为数据库的写入关注。
返回值
对象可以是MongoDB\Driver\Cursor或ArrayIterator。在这两种情况下,返回值都将为Traversable。
错误/异常
MongoDB\Exception\UnexpectedValueException
如果服务器命令响应格式不正确。
MongoDB\Exception\UnsupportedException
如果使用了所选服务器不支持的功能(例如 collation
,readConcern
,writeConcern
)。
MongoDB\Exception\InvalidArgumentException
与参数或选项解析相关的错误。
MongoDB\Driver\Exception\RuntimeException 对于扩展级别的其他错误(例如连接错误)。
示例
以下聚合示例使用 $currentOp
聚合管道阶段列出所有正在运行的命令,然后过滤此列表以仅显示正在运行的命令操作。
$database = (new MongoDB\Client)->admin; $cursor = $database->aggregate( [ ['$currentOp' => []], ['$match' => ['op' => 'command']], ] );