描述 |
设计的特定目标是提高聚合任务的性能和可用性。
用途哪里,因为他们通过一系列的管道运营商如物体转化的“管道”的做法
$group , $match 和$sort 。
有关管道运算符的更多信息,请参见聚合管道运算符。
|
实现用于处理大型数据集的Map-Reduce聚合。 |
主要特点 |
可以根据需要重复管道运算符。
管道操作员不必为每个输入文档都生成一个输出文档。
也可以生成新文档或过滤掉文档。
通过$merge 在版本4.2中添加,可以创建按需实例化视图,在该视图中可以逐步运行管道来更新输出集合的内容。$merge 可以将结果(插入新文档,合并文档,替换文档,保留现有文档,使操作失败,使用自定义更新管道处理文档)合并到现有集合中。
|
除分组操作外,还可以执行复杂的聚合任务以及对不断增长的数据集执行增量聚合。
请参阅Map-Reduce示例,并
执行Incremental Map-Reduce。
|
灵活性 |
限于聚合管道支持的运算符和表达式。
但是,可以使用$project 管道运算符添加计算字段,创建新的虚拟子对象以及将子字段提取到结果的顶层
。
有关$project 更多信息,请参见,以及
有关所有可用管道运算符的更多信息,请参见聚合管道运算符。
|
自定义map ,reduce 以及finalize JavaScript函数提供了灵活性,以聚合逻辑。
有关mapReduce 功能的详细信息和限制,请参见。
|
输出结果 |
返回结果作为游标。如果管道包括一个
$out 或多个$merge 阶段,则光标为空。
使用$out ,您可以完全替换现有的输出集合,也可以将其输出到新集合。有关$out 详细信息,请参见
。
使用$merge ,您可以输出到新集合或现有集合。对于现有选项,您可以指定如何将结果合并到输出集合中(插入新文档,合并文档,替换文档,保留现有文档,操作失败,使用自定义更新管道处理文档)。有关$merge 详细信息,请参见。
|
以各种选项(内联,新收集,合并,替换,缩小)返回结果。有关mapReduce 输出选项的详细信息,请参见。 |
分片 |
支持非分片和分片输入集合。
$merge 可以输出到非分片或分片集合。
|
支持非分片和分片输入集合。 |
更多信息 |
|
|