【问题标题】:What does MapReduceCommand.OutputType REDUCE do in MapReduce command in MongoDBMapReduceCommand.OutputType REDUCE 在 MongoDB 的 MapReduce 命令中做了什么
【发布时间】:2015-06-04 22:39:17
【问题描述】:

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

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

  1. 替换
  2. 合并
  3. 减少
  4. 内联

文档说:

public static final MapReduceCommand.OutputType MERGE

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

public static final MapReduceCommand.OutputType REDUCE

使用 outputTarget 的现有内容减少作业输出 收藏

OutputType.REDUCE 究竟是做什么的?

【问题讨论】:

    标签: mongodb mapreduce


    【解决方案1】:

    由于没有人回答,所以我在MongoDB-User Group上问了这个问题

    cars 是你的outputcollection(你想在其中存储map-reduce 作业的输出)。

    • REPLACE:如果您当前的 MR 成功,则cars 中的所有文档都将被删除(不管它们的_id)并替换为当前结果。

    • 合并:cars 中的任何文档都不会被删除。相反,当前结果中的每个文档都将替换 cars 中已存在的具有相同 _id 的文档。如果cars 中没有任何具有该_id 的文档,它将被插入。您可以将其视为 upsert:

      db.cars.update({_id: newDocument._id}, {value: newDocument.value}, {upsert: true})
      
    • REDUCE:这与 MERGE 非常相似。但不仅仅是替换现有文档,两个文档都将成为您的 reduce 函数的输入(即 reduce([oldDocument, newDocument])),并且生成的文档将替换现有文档。

    • INLINE:以与函数相同的方式将结果作为变量返回。 MongoDB 中没有存储任何内容,因此这不会影响任何集合。

    完整的答案可以在here找到。

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 2016-11-17
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多