Должен признать, я не уверен, что полностью понимаю, о чем вы спрашиваете.
Но, возможно, вам поможет одна из следующих мыслей:
либо ) когда вы перебираете результаты mapReduce, вы можете получить полные документы из mongodb для каждого результата. Это дало бы вам доступ ко всем полям в каждом документе по стоимости сетевого трафика.
или ) Значение, которое вы отправляете в emit (ключ, значение), может быть объектом. Таким образом, вы можете создать объект значения, который содержит все необходимые поля. Просто убедитесь, что вы используете точно такую же структуру объекта для возвращаемого значения вашего метода Reduce.
Я пытаюсь проиллюстрировать (непроверенный) пример.
map = function() {
emit(this.place,
{
'field1': this.field1,
'field2': this.field2,
'count' : 1
});
}
reduce = function(key, values) {
var result = {
'field1': values[0].field1,
'field2': values[0].field2,
'count' : 0 };
for (v in values) {
result.count += values[v].count;
}
return obj;
}