在mongodb中,我有以下地图函数:
问题出在下面这行代码上:
在我的数据集中,reduce函数被调用了9次,预计的映射减少结果计数应该为8908。
使用上述行,返回结果将正确地返回为8908。
但是,如果我将该行更改为:
返回的结果只有909,大约是预期结果的1/9。
同时,我尝试了print(value.count),打印出来的结果是1。
这种行为是如何解释的?
var map = function() {
emit( this.username, {count: 1, otherdata:otherdata} );
}
并将reduce函数修改如下:
var reduce = function(key, values) {
values.forEach(function(value){
total += value.count; //note this line
}
return {count: total, otherdata: values[0].otherdata}; //please ignore otherdata
}
问题出在下面这行代码上:
total += value.count;
在我的数据集中,reduce函数被调用了9次,预计的映射减少结果计数应该为8908。
使用上述行,返回结果将正确地返回为8908。
但是,如果我将该行更改为:
total += 1;
返回的结果只有909,大约是预期结果的1/9。
同时,我尝试了print(value.count),打印出来的结果是1。
这种行为是如何解释的?
total
吗? - Thilo