文档菜单
文档首页
/
MongoDB 手册
/ /

聚合命令比较

本页

  • 聚合命令比较表

注意

聚合管道作为 Map-Reduce 的替代方案

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

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

以下表格简要概述了MongoDB聚合命令的功能。

描述

旨在提高聚合任务性能和可用性的特定目标而设计。

采用“管道”方法,对象在通过一系列管道运算符(如$group$match$sort)时进行转换。

有关管道运算符的更多信息,请参阅聚合运算符

实现了Map-Reduce聚合以处理大型数据集。
主要特点

根据需要可以重复管道运算符。

管道运算符不必为每个输入文档生成一个输出文档。

还可以生成新文档或过滤文档。

使用 $merge 阶段,您可以创建按需物化视图,其中输出集合的内容可以在管道运行时增量更新。 $merge 可以将结果(插入新文档、合并文档、替换文档、保留现有文档、操作失败、使用自定义更新管道处理文档)合并到现有集合中。

除了分组操作之外,还可以执行复杂的聚合任务,以及在对持续增长的数据集进行增量聚合。

请参阅 Map-Reduce 示例执行增量 Map-Reduce。

灵活性

您可以使用 $accumulator$function 定义自定义聚合表达式。

您还可以使用 $project 管道操作符添加计算字段、创建新虚拟子对象以及将子字段提取到结果的最顶层。

有关更多信息,请参阅 $project,以及有关所有可用管道操作符的更多信息,请参阅 聚合操作符

自定义 mapreducefinalize JavaScript 函数为聚合逻辑提供灵活性。

请参阅 mapReduce 了解函数的详细信息及限制。

输出结果

以游标的形式返回结果。如果管道包括 $out 阶段或 $merge 阶段,游标为空。

使用 $out,您可以完全替换现有输出集合或将输出到新集合。有关详细信息,请参阅 $out

使用 $merge,您可以将输出到新或现有集合。对于现有集合,您可以指定如何将结果合并到输出集合中(插入新文档、合并文档、替换文档、保留现有文档、操作失败、使用自定义更新管道处理文档)。有关详细信息,请参阅 $merge

以各种选项(内联、新集合、合并、替换、减少)返回结果。有关输出选项的详细信息,请参阅 mapReduce
分片

支持非分片和分片输入集合。

$merge 可以输出到非分片或分片集合。

支持非分片和分片输入集合。
更多信息

提示

另请参阅

返回

$zip