我有多个集合,并且正在通过mapReduce根据它们的内容创建单个信息集合。在我的reduce方法中,如何根据源集合应用条件逻辑,或者如果它是来自输出集合的先前存在的键。
将收集A减少到信息收集中时:
将集合B合并到信息集合中时:
目前我正在尝试以下方法:
问题
我最近意识到finalize将被多次调用。这使我无法辨别出应该在reduce中应用的逻辑。
如何根据源集合应用条件逻辑,或者如果它是我的reduce方法中以前存在的键?
答案 0 :(得分:0)
如何根据源集合应用条件逻辑,或者如果它是我的reduce方法中的先前存在的键?
要做到这一点,您需要来自"信息"的数据。要包含在发送到reduce()的数据中的集合。为此,输出"减少"行动。见Output to a Collection with an Action。在减少来自集合A(或B)的数据之后,"减少"操作指示Mongo然后减少此数据的交集(按键)并在输出集合中记录。
如果你的map()生成了"信息中已存在的密钥" collection,reduce将在新记录(来自A或B)和现有记录(来自"信息")上运行。显然,这意味着你的reduce函数变得更复杂,但至少你拥有应用条件逻辑所需的所有数据。