MapReduce作业是否有任何方法可以从MongoDB辅助节点创建或删除集合

时间:2013-08-28 23:32:57

标签: mongodb mapreduce

我有一个MapReduce作业,我想只在辅助作业上运行。 MapReduce输出将创建一个临时集合来存储结果,我想从这个集合中读取结果,然后删除集合。

2 个答案:

答案 0 :(得分:1)

您无法运行输出到MongoDB辅助节点上的集合的MapReduce作业。您只能直接在MongoDB主数据库上插入/更新数据。

但是,您可以使用MapReduce参数获得out输出returned inline,例如:

out: { inline: 1 }

请注意,内联输出仅限于maximum document size(与MongoDB 2.4相同,为16 MB)。

答案 1 :(得分:0)

answer above是准确的。只需提及其他信息:

  • Map-Reduce(和聚合管道作业)必须是只读的(从数据库的角度来看)才能在Secondaries上运行。
  • 对于MR,需要传递设置inline的{​​{1}}参数。

示例(Source):

outline
  • 即使遵循所有规则(Source),MapReduce作业也不会在分片群集的情况下在辅助作业上运行。这是一个known bug,请注意它,以便MongoDB人员解决这些问题。 :)