我正在使用collection.mapReduce(MapReduceCommand command)
来运行MapReduce作业。
MapReduceCommand
输入enum
输出类型。可以是:
文档说:
public static final MapReduceCommand.OutputType MERGE
将作业输出与outputTarget的现有内容合并 集合
public static final MapReduceCommand.OutputType REDUCE
使用outputTarget的现有内容减少作业输出 集合
OutputType.REDUCE到底是做什么的?
答案 0 :(得分:1)
由于没有人回答,所以我在MongoDB-User Group
上问了这个问题说cars
是你的 outputcollection (你想要存储map-reduce作业的输出)。
更换:如果您当前的MR成功,cars
中的所有文档都将被删除(无论其_id如何),并替换为当前结果。
MERGE:cars
中的任何文件都不会被删除。相反,当前结果中的每个文档都将使用相同的_id替换cars
中已存在的文档。如果cars
中没有任何包含该_id的文档,则只会插入该文档。你可以看到这就像一个upsert:
db.cars.update({_id: newDocument._id}, {value: newDocument.value}, {upsert: true})
REDUCE:这与MERGE非常相似。但是,不仅仅替换现有文档,两个文档都将是reduce函数的输入(即reduce([oldDocument,newDocument])),结果文档将替换现有文档。
INLINE:以与函数相同的方式将结果作为变量返回。 MongoDB中没有存储任何内容,因此这不会影响任何集合。
可以找到完整的答案here。