On this page
聚合管道阶段
在db.collection.aggregate方法和db.aggregate方法中,pipeline个阶段出现在数组中。文档按 Sequences 通过各个阶段。
Stages
db.collection.aggregate() Stages
除$out和$geoNear阶段外,所有其他项都可以在管道中多次出现。
Note
有关特定运算符的详细信息,包括语法和示例,请单击特定运算符以转到其参考页。
db.collection.aggregate( [ { <stage> }, ... ] )
Stage | Description |
---|---|
$addFields | 将新字段添加到文档。类似于$project,$addFields重塑流中的每个文档;具体而言,通过向输出文档添加新字段,该输出文档既包含 Importing 文档中的现有字段,又包含新添加的字段。 |
$bucket | 根据指定的表达式和存储段边界将传入文档分类为称为存储段的组。 |
$bucketAuto | 根据指定的表达式将传入文档分类为特定数量的组,称为存储桶。会自动确定存储区边界,以尝试将文档平均分配到指定数量的存储区中。 |
$collStats | 返回有关集合或视图的统计信息。 |
$count | 返回聚合管道此阶段的文档数计数。 |
$facet | 在同一 Importing 文档集的单个阶段中处理多个aggregation pipelines。支持在一个阶段中创建能够表征多维或多面数据的多面聚合。 |
$geoNear | 根据与地理空间点的接近程度返回有序的文档流。结合了$match,$sort和$limit的地理空间数据功能。输出文档包括附加距离字段,并且可以包括位置标识符字段。 |
$graphLookup | 对集合执行递归搜索。在每个输出文档中,添加一个新的数组字段,其中包含对该文档的递归搜索的遍历结果。 |
$group | 按指定的标识符表达式对 Importing 文档进行分组,并将累加器表达式(如果指定)应用于每个组。消耗所有 Importing 文档,并在每个不同的组中输出一个文档。输出文档仅包含标识符字段,如果指定,还包含累积字段。 |
$indexStats | 返回有关集合每个索引使用情况的统计信息。 |
$limit | 将未经修改的前* n 个文档传递到管道,其中 n 是指定的限制。对于每个 Importing 文档,输出一个文档(对于第一个 n 文档)或零文档(在第一个 n *文档之后)。 |
$listSessions | 列出所有活动时间已经足够长以传播到system.sessions 集合的会话。 |
$lookup | 对* same *数据库中的另一个集合执行左外部联接,以过滤“联接”集合中的文档以进行处理。 |
$match | 筛选文档流,以仅允许匹配的文档未经修改地传递到下一个管道阶段。 $match使用标准 MongoDB 查询。对于每个 Importing 文档,输出一个文档(匹配)或零文档(不匹配)。 |
$out | 将聚合管道的结果文档写入集合。要使用$out阶段,它必须是管道中的最后一个阶段。 |
$project | 重塑流中的每个文档,例如通过添加新字段或删除现有字段。对于每个 Importing 文档,输出一个文档。 |
$redact | 通过基于文档本身中存储的信息限制每个文档的内容,来重塑流中的每个文档。合并了$project和$match的功能。可用于实施字段级修订。对于每个 Importing 文档,输出一个或零个文档。 |
$replaceRoot | 用指定的嵌入式文档替换文档。该操作将替换 Importing 文档中的所有现有字段,包括_id 字段。指定嵌入在 Importing 文档中的文档以将嵌入的文档提升到顶层。 |
$sample | 从其 Importing 中随机选择指定数量的文档。 |
$skip | 跳过第一个* n 文档,其中 n 是指定的跳过编号,并将其余未修改的文档传递到管道。对于每个 Importing 文档,输出零个文档(对于第一个 n 个文档)或一个文档(如果在第一个 n *个文档之后)。 |
$sort | 通过指定的排序键对文档流进行重新排序。只有 Sequences 改变;这些文档保持不变。对于每个 Importing 文档,输出一个文档。 |
$sortByCount | 根据指定表达式的值对传入文档进行分组,然后计算每个不同组中的文档数。 |
$unwind | 从 Importing 文档解构数组字段,以输出* each 元素的文档。每个输出文档用元素值替换数组。对于每个 Importing 文档,输出 n 个文档,其中 n *是数组元素的数量,对于空数组可以为零。 |
有关在管道阶段使用的聚合表达式运算符,请参见聚合管道运算符。
db.aggregate() Stages
从 3.6 版开始,MongoDB 还提供db.aggregate方法:
db.aggregate( [ { <stage> }, ... ] )
以下阶段使用db.aggregate()方法而不是db.collection.aggregate()方法。
Stage | Description |
---|---|
$currentOp | 返回有关 MongoDB 部署的活动和/或休眠操作的信息。 |
$listLocalSessions | 列出当前在当前连接的mongos或mongod实例上使用的所有活动会话。这些会话可能尚未传播到system.sessions 集合。 |
按字母 Sequences 列出阶段
Name | Description |
---|---|
$addFields | 将新字段添加到文档。输出包含 Importing 文档中所有现有字段和新添加的字段的文档。 |
$bucket | 根据指定的表达式和存储段边界将传入文档分类为称为存储段的组。 |
$bucketAuto | 根据指定的表达式将传入文档分类为特定数量的组,称为存储桶。会自动确定存储区边界,以尝试将文档平均分配到指定数量的存储区中。 |
$collStats | 返回有关集合或视图的统计信息。 |
$count | 返回聚合管道此阶段的文档数计数。 |
$currentOp | 返回有关 MongoDB 部署的活动和/或休眠操作的信息。要运行,请使用db.aggregate()方法。 |
$facet | 在同一 Importing 文档集的单个阶段中处理多个aggregation pipelines。支持在一个阶段中创建能够表征多维或多面数据的多面聚合。 |
$geoNear | 根据与地理空间点的接近程度返回有序的文档流。结合了$match,$sort和$limit的地理空间数据功能。输出文档包括附加距离字段,并且可以包括位置标识符字段。 |
$graphLookup | 对集合执行递归搜索。在每个输出文档中,添加一个新的数组字段,其中包含对该文档的递归搜索的遍历结果。 |
$group | 按指定的标识符表达式对 Importing 文档进行分组,并将累加器表达式(如果指定)应用于每个组。消耗所有 Importing 文档,并在每个不同的组中输出一个文档。输出文档仅包含标识符字段,如果指定,还包含累积字段。 |
$indexStats | 返回有关集合每个索引使用情况的统计信息。 |
$limit | 将未经修改的前* n 个文档传递到管道,其中 n 是指定的限制。对于每个 Importing 文档,输出一个文档(对于第一个 n 文档)或零文档(在第一个 n *文档之后)。 |
$listLocalSessions | 列出当前在当前连接的mongos或mongod实例上使用的所有活动会话。这些会话可能尚未传播到system.sessions 集合。 |
$listSessions | 列出所有活动时间已经足够长以传播到system.sessions 集合的会话。 |
$lookup | 对* same *数据库中的另一个集合执行左外部联接,以过滤“联接”集合中的文档以进行处理。 |
$match | 筛选文档流,以仅允许匹配的文档未经修改地传递到下一个管道阶段。 $match使用标准 MongoDB 查询。对于每个 Importing 文档,输出一个文档(匹配)或零文档(不匹配)。 |
$out | 将聚合管道的结果文档写入集合。要使用$out阶段,它必须是管道中的最后一个阶段。 |
$project | 重塑流中的每个文档,例如通过添加新字段或删除现有字段。对于每个 Importing 文档,输出一个文档。 |
$redact | 通过基于文档本身中存储的信息限制每个文档的内容,来重塑流中的每个文档。合并了$project和$match的功能。可用于实施字段级修订。对于每个 Importing 文档,输出一个或零个文档。 |
$replaceRoot | 用指定的嵌入式文档替换文档。该操作将替换 Importing 文档中的所有现有字段,包括_id 字段。指定嵌入在 Importing 文档中的文档以将嵌入的文档提升到顶层。 |
$sample | 从其 Importing 中随机选择指定数量的文档。 |
$skip | 跳过第一个* n 文档,其中 n 是指定的跳过编号,并将其余未修改的文档传递到管道。对于每个 Importing 文档,输出零个文档(对于第一个 n 个文档)或一个文档(如果在第一个 n *个文档之后)。 |
$sort | 通过指定的排序键对文档流进行重新排序。只有 Sequences 改变;这些文档保持不变。对于每个 Importing 文档,输出一个文档。 |
$sortByCount | 根据指定表达式的值对传入文档进行分组,然后计算每个不同组中的文档数。 |
$unwind | 从 Importing 文档解构数组字段,以输出* each 元素的文档。每个输出文档用元素值替换数组。对于每个 Importing 文档,输出 n 个文档,其中 n *是数组元素的数量,对于空数组可以为零。 |