MongoDB\Collection::aggregate()
定义
MongoDB\Collection::aggregate()
对集合执行聚合框架管道操作。
function aggregate( array $pipeline, array $options = [] ): Traversable
参数
$pipeline
: array- 指定聚合管道操作。
$options
: array指定所需选项的数组。
名称类型说明allowDiskUse布尔允许写入临时文件。设置为true
时,聚合阶段可以将数据写入到dbPath
目录中的_tmp
子目录。batchSize整型指定光标的批处理大小,将应用于初始
aggregate
命令和任何后续getMore
命令。这决定了服务器每次响应中返回的最大文档数。批量大小为
0
的特殊之处在于,它仅适用于初始的aggregate
命令;后续的getMore
命令将使用服务器的默认批量大小。这对于从aggregate
快速返回游标或失败结果可能很有用,而无需进行大量的服务器端工作。bypassDocumentValidation布尔编解码器MongoDB\Codec\DocumentCodec排序规则数组|对象comment混合解释布尔指定是否返回有关管道处理的信息。
1.4 版本中的新增功能。
提示字符串|数组|对象要使用的索引。将索引名称指定为字符串或将索引键模式指定为文档。如果指定,查询系统将只考虑使用提示索引的计划。
1.3 版本中的新增功能。
let数组|对象参数名称和值的映射。值必须是常量或不引用文档字段的封闭表达式。然后可以在聚合表达式上下文中将参数作为变量进行访问(例如
$$var
)。5.0 之前的服务器版本不支持此功能,如果使用,将导致执行时出现异常。
1.9 版本中的新功能。
maxTimeMS整型处理游标操作的累计时间限制(以毫秒为单位)。MongoDB 最早会在中断点之后中止操作。
事务外的readPreference读取要用于操作的偏好。 默认为集合的读取偏好。
会话与操作相关联的客户端会话。
1.3 版本中的新增功能。
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 对于扩展级别的其他错误(例如连接错误)。
行为
示例
以下聚合示例使用名为 names
的集合,并将 first_name
字段分组在一起,计算每个组中的结果总数,并按名称对结果进行排序。
$collection = (new MongoDB\Client)->test->names; $cursor = $collection->aggregate( [ ['$group' => ['_id' => '$first_name', 'name_count' => ['$sum' => 1]]], ['$sort' => ['_id' => 1]], ] );