【发布时间】:2011-08-08 22:16:16
【问题描述】:
所以我和我的朋友正在尝试对一个不断添加项目的集合进行 map reduce。
基本上我们计算一些字段的平均值并将它们放入一个集合中(通过 map reduce)。
这就是问题所在,每次运行 map reduce 时,它都会遍历所有文档。我是 map reduce 的新手,但据我所知,如果它只在新的和/或修改的文档上运行 map reduce 并使用现有集合更新它们,似乎会非常高效。
所以我觉得没关系,我会自己做。向集合添加了“已处理:false”,当 map reduce 运行时,我传入查询过滤器“{processed:false}”,然后在 map reduce 运行后,我将“{processed:true}”设置为所有项目其中已处理 = false。
这就是问题所在。我担心边缘情况。如果在 map reduce 期间将一些项目添加到集合中会发生什么?它们从未传递到 map reduce 中,现在在 map reduce 运行后,它们的处理标志设置为 true。
如果不是将“查询过滤器”传递给 mongo,而是可以传递一个查询对象“set”,那么我可以将处理后的标志设置为 true,然后传递那些对象。
【问题讨论】:
标签: mongodb mapreduce database nosql