【发布时间】:2013-04-21 20:45:38
【问题描述】:
我正在测试 mapreduce 函数,但出现意外行为:
我用这个简单的 for 循环填充了我的集合:
for (i=0; i<10000; i++) {db.coll.insert({'a':1,'b':2})}
所以我想计算具有相同“a”值的文档(这是一个测试:-)) 我的地图功能是
map = "function() { emit(this.a,this.b);}"
而减少是:
reduce = "function (key,values) {return values.length;}"
打电话 db.coll.mapReduce(map, reduce, {out:{inline:1}})
期望值是 10000 个具有相同 'a' 的文档,可以吗?
但结果是:
db.coll.mapReduce(map, reduce, {out:{inline:1}})
{
"results" : [
{
"_id" : 1,
"value" : 101
}
],
"timeMillis" : 892,
"counts" : {
"input" : 10000,
"emit" : 10000,
"reduce" : 100,
"output" : 1
},
"ok" : 1,
}
问题出在哪里???为什么值为 101?减少结果中的计数是什么意思? 帮我!提前谢谢!!!
【问题讨论】:
标签: mongodb map mapreduce reduce