Я не уверен, является ли это точной копией введенного вами кода, но похоже, что вы пропускаете запятые между полями в объекте, передаваемом в runCommand
.Попробуйте:
db.runCommand({ mapreduce: users,
map : function Map() {
emit(this.emailId, 1);
},
reduce : function Reduce(key, vals) {
return Array.sum(vals);
},
finalize : function Finalize(key, reduced) {
return reduced
},
out : { inline : 1 }
});
Также обратите внимание, что даже при использовании finalize
невозможно фактически удалить записи из выведенного документа (или коллекции) за один проход с помощью Map-Reduce.Однако, независимо от того, используете ли вы out: {inline: 1}
или out: "some_collection"
, отфильтровать результаты с количеством, равным 1.
, довольно тривиально.