我很难掌握map reduce的工作原理以及何时使用它。我得到的一些随机结果只是没有意义,但也许我对mapreduce的理解是错误的?
这是我正在做的一个例子。
我收集了超过15000个具有以下结构的英国城镇;
{
"_id" : ObjectId("4e234105e138231a7f000004"),
"county" : "Powys",
"name" : "Abbey-Cwmhir",
"location" : {
"latitude" : 52.3298355191946,
"longitude" : -3.39230306446552
}
}
每个县都有很多城镇,我想为每个县建立一个新的集合,其结构如下:
{
"_id" : "Powys",
"towns" : [
{
"name" : "Abbey-Cwmhir",
"loc" : [52.3298355191946, -3.39230306446552]
},
//.. etc.
]
}
所以,我猜地图缩小是这个权利的理想候选人吗?如果是,那么正确的地图和减少功能怎么样?
答案 0 :(得分:2)
作为起点,你可以使用这样的东西:
地图功能
function() {
emit( this.county,{
towns: [
{
name: this.name,
loc: this.location
}
]
} );
}
减少功能
function(key, values) {
result = { towns: [] };
values.forEach(
function( townsgroup ) {
townsgroup.towns.forEach(
function( town ) {
result.towns.push( town );
});
});
return result;
}
感谢dcrosta的纠正。