###Collections Salas{_id} Reservas{_id, sala_id, data}
###Preciso contar as reservas de cada sala por uma data:
map = function () { emit(this.sala_id, [1]); }
reduce = function (sala, values) { var sum = 0; if (values) { for (var i = 0; i < values.length; i++) { sum += 1; } } return {sala:sala, total:sum}; }
db.reservas.mapReduce(map, reduce, {"out":"resultado"})
###Problema: Quando existe apenas 1 reserva para uma sala, o reduce não é chamado:
db.resultado.find({}) { "_id" : ObjectId("4fbd6d5b700f6e1266000002"), "value" : [ 1 ] } { "_id" : ObjectId("4fbd6e69700f6e1266000004"), "value" : { "sala" : ObjectId("4fbd6e69700f6e1266000004"), "total" : 2 } }