MapReduceCommand.OutputType REDUCE在MongoDB中的MapReduce命令中做了什么

时间:2015-05-28 13:39:32

标签: mongodb mapreduce

我正在使用collection.mapReduce(MapReduceCommand command)来运行MapReduce作业。

MapReduceCommand输入enum输出类型。可以是:

  1. 更换
  2. MERGE
  3. REDUCE
  4. INLINE
  5. 文档说:

      

    public static final MapReduceCommand.OutputType MERGE

         

    将作业输出与outputTarget的现有内容合并   集合

         

    public static final MapReduceCommand.OutputType REDUCE

         

    使用outputTarget的现有内容减少作业输出   集合

    OutputType.REDUCE到底是做什么的?

1 个答案:

答案 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