聚合命令比较

在本页面

[success] 建议

从4.4版开始,MongoDB添加$accumulator$function运算符。使用 $accumulator$functionmapReduce可以使用聚合运算符重写表达式。

即使是4.4版本之前,一些map-reduce表达式也可以使用改写其他聚合管道运算符,如$group$merge等。

聚合命令比较表

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

Aggregate / db.collection.aggregate() MapReduce / db.collection.mapReduce()
描述 旨在提高聚合任务的性能和可用性的具体目标。
使用“管道”方法,其中 objects 在通过一系列管道操作符(如$group$match$sort)时进行转换。
有关管道运算符的更多信息,请参见聚合管道操作符
实现 Map-Reduce 聚合以处理大型数据集。
主要特点 可以根据需要重复管道操作符。
管道运算符不需要为每个输入文档生成一个输出文档。
还可以生成新文档或过滤掉文档。
通过在版本4.2中添加$merge,可以创建按需的物化视图,在该视图中可以逐步运行管道来更新输出集合的内容。$merge可以将结果(插入新文档、合并文档、替换文档、保留现有文档、使操作失败、使用自定义更新管道处理文档)合并到现有集合中。
除了分组操作之外,还可以执行复杂的聚合任务以及对不断增长的数据集执行增量聚合。
Map-Reduce 例子执行增量 Map-Reduce
灵活性 从4.4版开始,可以使用$accumulator$function定义自定义聚合表达式。
在以前的版本中,只能使用聚合管道支持的运算符和表达式。
但是,可以使用$project 管道运算符添加计算字段,创建新的虚拟子对象以及将子字段提取到结果的顶层。
有关更多信息,请参阅$project以及聚合管道操作符,以了解有关所有可用管道操作符的更多信息。
自定义mapreducefinalize JavaScript 函数为聚合逻辑提供了灵活性。
有关功能的详细信息和限制,请参阅MapReduce
输出结果 以游标的形式返回结果。如果管道包含$out阶段或$merge阶段,则游标为空。
使用$out,您可以完全替换现有的输出集合或输出到新的集合。详情见$out
使用$merge,您可以输出到新的或现有的集合。对于现有的cllections,可以指定如何将结果合并到输出集合中(插入新文档、合并文档、替换文档、保留现有文档、使操作失败、使用自定义更新管道处理文档)。有关详细信息,请参见$merge
返回各种选项的结果(内联,新集合,合并,替换,减少)。有关输出选项的详细信息,请参阅MapReduce
分片 支持非分片和分片输入集合。
$merge可以输出到非分片或分片集合。
支持非分片和分片输入集合。
更多信息 聚合管道
db.collection.aggregate()
aggregate
Map-Reduce
db.collection.mapReduce()
mapReduce

也可以看看

译者:李冠飞

校对:李冠飞

参见

原文 - Aggregation Commands Comparison

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""