mongodb map reduce而不保存新结果

时间:2012-10-15 20:58:38

标签: mongodb mapreduce

我有一个非常简单的mongodb map减少情况。我需要在mysql世界中类似的东西:

select distinct(cookie) from table;

我发现map reduce是我在mongo中的工具。所以我写了这个:

map2 = Code("function () { emit(this.cookie, 1);}")
reduce2 = Code("function (key, values) {return 1;}")
totalunique = collection.map_reduce(map2, reduce2, out={"reduce":aggregatedcollection}, query=query).count();

到目前为止非常简单。我可以通过cron运行它,这使aggregatedcollection保持最新状态。我保存了一个timestamp变量来放入我的查询,以确保我只处理每一行。

这是我的问题。让我们说时间戳t1我在该集合中有c1个值。不久之后,我在时间戳t2再次运行它,它返回c2个值。但是,在t2后续运行时,我希望它返回c2,但我不希望c2中的新值保存在aggregatedcollection

或者换句话说,我希望第二次在t2运行它,让它返回c2,但aggregatedcollection只能填充{{ 1}}(第一次运行的值)。

因此,在c1运行后,我希望它返回t2并在c2中设置c1,这是此问题的唯一参数。

似乎我应该关注map reduce函数的out option,但这些选项似乎都不是我想要的。

当然,我可以将该集合复制到临时集合中,然后将其删除,然后删除它,但这需要花费太多时间。

1 个答案:

答案 0 :(得分:0)

尝试此操作下面将在屏幕上显示输出。

var options = {out: { "inline": 1 }, query : query};  
db.colls.mapReduce(_mapper, _reducer, options);