Exemplos de redução de mapas do Mongo podem ser encontrados aqui:http://docs. mongodb.org/manual/tutorial/map-reduce-examples/
O número de documentos para cada tupla country_id, city_id e region_id é simples:
> function m() {
for(var i in this.cities) {
emit({country_id:this.country_id,
city_id:this.cities[i].city_id,
region_id:this.regions.region_id},
1);
} }
> function r(id,docs) {
return Array.sum(docs);
}
> db.loc.mapReduce(m,r,{out:"map_reduce_out"})
{
"result" : "map_reduce_out",
"timeMillis" : 5,
"counts" : {
"input" : 1,
"emit" : 6,
"reduce" : 0,
"output" : 6
},
"ok" : 1,
}
> db.map_reduce_out.find()
{ "_id" : { "country_id" : 328, "city_id" : 817, "region_id" : 796 }, "value" : 1 }
{ "_id" : { "country_id" : 328, "city_id" : 18851, "region_id" : 796 }, "value" : 1 }
{ "_id" : { "country_id" : 328, "city_id" : 19398, "region_id" : 796 }, "value" : 1 }
{ "_id" : { "country_id" : 328, "city_id" : 31022, "region_id" : 796 }, "value" : 1 }
{ "_id" : { "country_id" : 328, "city_id" : 31101, "region_id" : 796 }, "value" : 1 }
{ "_id" : { "country_id" : 328, "city_id" : 31102, "region_id" : 796 }, "value" : 1 }