Docs 菜单
Docs 主页
/
数据库手册
/

聚合管道 (Aggregation Pipeline)

聚合管道由一个或多个处理文档的 阶段组成:

  • 每个阶段对输入文档执行一个操作。例如,某个阶段可以过滤文档、对文档进行分组并计算值。

  • 从一个阶段输出的文档将传递到下一阶段。

  • 一个聚合管道可以返回针对文档组的结果。例如,返回总值、平均值、最大值和最小值。

如使用通过聚合管道更新中显示的阶段,则可以通过聚合管道更新文档。

注意

您可以 在用户界面运行聚合管道,用于 MongoDB Atlas 中托管的部署。

当您在 MongoDB Atlas 用户界面中的 MongoDB Atlas 部署上运行聚合管道时,您可以预览每个阶段的结果。

完整聚合管道教程部分包含完整教程,以分步格式详细解释常见聚合任务。这些教程包括MongoDB Shell和每个官方MongoDB驱动程序的示例。

聚合管道由一个或多个处理文档的阶段组成:

  • 阶段不必为每个输入文档输出一个文档。例如,某些阶段可能会产生新文档或过滤掉现有文档。

  • 同一个阶段可以在管道中多次出现,但以下阶段例外:$out$merge$geoNear

  • 要在阶段中计算平均值和执行其他计算,请使用指定聚合操作符聚合表达式。在下一节中,您将了解有关聚合表达式的更多信息。

对于所有聚合阶段,请参阅聚合管道阶段。

某些聚合管道阶段接受聚合表达式,这些表达式:

您可以使用 $accumulator$function 聚合操作符在 JavaScript 中定义自定义聚合表达式。

对于所有聚合表达式,请参阅表达式。

字段路径表达式用于访问权限输入文档中的字段。要指定字段路径,请在字段名称或虚线字段路径(如果该字段位于嵌入式文档中)前添加美元符号 $。例如,用 "$user" 指定 user 字段的字段路径,或用 "$user.name" 指定嵌入式 "user.name" 字段的字段路径。

"$<field>" 等效于 "$$CURRENT.<field>",其中 CURRENT 为系统变量,而它默认为当前对象的根(除非在特定阶段另行说明)。

有关更多信息和示例,请参阅字段路径。

要运行聚合管道,请使用:

要使用聚合管道更新文档,请使用:

命令
mongosh 方法

聚合分析管道对值类型和结果大小有限制。请参阅聚合管道限制

聚合管道支持针对分片集合的操作。请参阅聚合管道和分片集合

从 MongoDB 5.0 开始, map-reduce已弃用:

  • 您应该使用聚合管道,而不是 map-reduce。聚合管道提供比 map-reduce 更好的性能和可用性。

  • 您可以使用聚合管道阶段(例如 $group$merge 等)重写 map-reduce 操作。

  • 对于需要自定义功能的 map-reduce 操作,可以使用 $accumulator$function 聚合操作符。可以使用这些操作符在 JavaScript 中定义自定义聚合表达式。

有关 map-reduce 的聚合管道替代方案的示例,请参阅:

要了解有关聚合管道的详细信息,请参阅:

后退

聚合操作

获得技能徽章

免费掌握“数据转换基础知识”!

了解详情

在此页面上