我有一个数据结构来跟踪不同城市的人们:
//in db.persons
{
name: "John",
city: "Seattle
},
{
name: "Bill",
city: "Portland"
}
我想运行一个地图缩减来获取每个城市有多少人的列表,所以结果将如下所示:
{
_id: "Seattle",
value: 10
}
我的地图缩减功能如下所示:
map = function(){
var city = this.city
emit(city, 1);
};
reduce = function(key, values){
var result = 0;
values.forEach(function(value){
result += 1;
});
return result;
}
非常简单的东西,我想这需要city
作为键,然后为找到的每个匹配城市的结果加一。然而,在生成的地图缩减中,该值相差很大。将我的归约函数切换为:
reduce = function(key, values){
var result = 0;
values.forEach(function(value){
result += value;
});
return result;
}
并添加value
到结果(应该是 1,据我所知,我的emit
函数)返回了正确的结果。
为什么结果不同?难道我的value
在reduce函数中是1吗?