聚合命令比较
下表简要概述了 MongoDB 聚合命令的功能。
aggregate / db.collection.aggregate() | mapReduce / db.collection.mapReduce() | ||
---|---|---|---|
Description | 设计的特定目标是提高聚合任务的性能和可用性。 | ||
使用“流水线”方法,其中对象在经过一系列流水线运算符(例如$group,$match和$sort)时进行转换。 有关流水线运算符的更多信息,请参见聚合管道运算符。 | 实施 Map-Reduce 聚合以处理大型数据集。 | ||
主要功能 | 管道线运算符可以根据需要重复。 管道操作员不必为每个 Importing 文档都生成一个输出文档。 | 还可以生成新文档或筛选出文档。 | 除了分组操作之外,还可以执行复杂的聚合任务以及对连续增长的数据集执行增量聚合。 参见Map-Reduce Examples和执行增量 Map-减少。 |
灵 Active | 仅限于聚合管道支持的运算符和表达式。 但是,可以使用$project管道运算符添加计算字段,创建新的虚拟子对象以及将子字段提取到结果的顶级。 有关所有可用管道运算符的更多信息,请参见$project,有关更多信息,请参见聚合管道运算符。 | 自定义map ,reduce 和finalize JavaScript 函数为聚合逻辑提供了灵 Active。有关功能的详细信息和限制,请参见mapReduce。 | |
输出结果 | 作为光标返回结果。如果管道包含$out阶段,则光标为空。 在版本 3.6 中进行了更改:MongoDB 3.6 无需使用aggregate命令而无需使用 cursor 选项,除非该命令包含explain 选项,否则该命令将不使用。除非包含explain 选项,否则必须指定游标选项。要指示具有默认批处理大小的光标,请指定 cursor: {} 。要使用非默认批处理大小指示光标,请使用 cursor: { batchSize: <num> } 。 | 返回各种选项的结果(内联,新收集,合并,替换,缩小)。有关输出选项的详细信息,请参见mapReduce。 | |
共享 | 支持非分片和分片 Importing 集合。 | 支持非分片和分片 Importing 集合。 | |
更多信息 | Aggregation Pipeline db.collection.aggregate() aggregate | Map-Reduce db.collection.mapReduce() mapReduce. |