MongoDB\Collection::aggregate()
定义
MongoDB\Collection::aggregate()
执行一个聚合框架管道操作。
function aggregate( array $pipeline, array $options = [] ): Traversable
参数
$pipeline
: array- 指定一个聚合管道操作。
$options
: array指定所需选项的数组。
名称类型描述allowDiskUse布尔值启用写入临时文件。当设置为true
时,聚合阶段可以将数据写入dbPath
目录下的_tmp
子目录。batchSize整数指定游标的批处理大小,该大小将应用于初始的
聚合
命令和任何后续的getMore
命令。这决定了从服务器返回的每个响应中可返回的最大文档数。当
0
的批处理大小是特殊的,它只会应用于初始的聚合
命令;后续的getMore
命令将使用服务器的默认批处理大小。这可以用于快速从聚合
返回游标或失败,而不进行大量的服务器端工作。bypassDocumentValidation布尔值codecMongoDB\Codec\DocumentCodec用于编码或解码文档的
codec
。此选项与typeMap
选项互斥。默认为集合的codec。默认codec
选项的继承优先于typeMap
选项。默认为集合的codec。默认
codec
选项的继承优先于typeMap
选项。新在版本1.17.
collation数组|对象comment混合explain布尔值指定是否返回管道处理的信息。
新在版本1.4.
hint字符串|数组|对象要使用的索引。指定索引名称作为字符串或索引键模式作为文档。如果指定,则查询系统将仅考虑使用提示索引的计划。
新在版本1.3.
let数组|对象参数名称和值的映射。值必须是常数或封闭表达式,不引用文档字段。然后可以在聚合表达式上下文中作为变量访问参数(例如
$$var
)。此功能不支持服务器版本低于5.0,如果在执行时使用,将导致异常。
新在版本1.9.
maxTimeMS整数处理游标上操作的总时间限制(以毫秒为单位)。MongoDB会在最早的中断点后中止操作。
readConcernreadPreference读偏好用于操作的。默认为集合的读偏好。
session与操作关联的客户端会话。
新在版本1.3.
typeMaparray应用于游标的类型映射,它决定了BSON文档如何转换为PHP值。默认为集合的类型映射。
writeConcern
返回值
一个 MongoDB\Driver\Cursor 或 ArrayIterator 对象。在两种情况下,返回值都将为 可遍历的。
错误/异常
MongoDB\Exception\UnexpectedValueException
如果服务器命令响应格式错误。
MongoDB\Exception\UnsupportedException
如果使用了所选服务器不支持选项(例如 collation
,readConcern
,writeConcern
)。
MongoDB\Exception\InvalidArgumentException
对于与参数或选项解析相关的错误。
MongoDB\Driver\Exception\RuntimeException 对于扩展级别的其他错误(例如连接错误)。
行为
MongoDB\Collection::aggregate()
方法返回一个 MongoDB\Driver\Cursor 对象。
示例
以下聚合示例使用名为 names
的集合,并将 first_name
字段分组,计算每个组的结果总数,并按名称排序。
$collection = (new MongoDB\Client)->test->names; $cursor = $collection->aggregate( [ ['$group' => ['_id' => '$first_name', 'name_count' => ['$sum' => 1]]], ['$sort' => ['_id' => 1]], ] );