MongoDB map减少了产生奇怪的结果

时间:2013-01-29 08:42:10

标签: mongodb mapreduce

我在MongoDB(c#driver)中实现了一个简单的'get max value'map reduce。 对于我的测试,我在集合中有10个项目,其中int _id = 1到10.

我的地图和缩小如下:

var map = "function() {emit('_id', this.Id);}";
var reduce = "function(key, values) {var max = 1; for (id in values) {if(id>max) {max=id;}} } return max;}";

当我跑步时,我得到结果9,奇怪!!

我认为地图正在输出一个字符串,因此比较不能按预期工作。 任何帮助都会很棒

1 个答案:

答案 0 :(得分:1)

如果值只包含一个项目,则不会运行Reduce函数。如果所有ID都是唯一的,并且您在地图中的键只是该ID,则由于设计问题(用于提高性能),reduce阶段将不起作用。如果您需要更改reduce输出的格式,则应使用finalize方法。或者只是看一下aggregation framework,它提供了非常有用的数据播放工具。

检查jira

  

jira.mongodb.org/browse/SERVER-5818

如果您只是想熟悉map reduce,我建议您尝试使用map-reduce真正有意义的不同场景

干杯