Не съм използвал mongoDB, но съм използвал mapreduce. Мисля, че сте на прав път по отношение на функциите mapreduce. За да изключите he 0 и празни низове, можете да добавите отметка в самата функция map.. нещо като
m = function () {
if(this.MlsId!=0 && this.MlsId!="") {
emit(this.MlsId, 1);
}
}
И reducir трябва да връща двойки ключ-стойност. Така че трябва да бъде:
r = function(k, vals) {
emit(k,Arrays.sum(vals);
}
След това трябва да имате набор от двойки ключ-стойност в изхода, така че ключът да е MlsId и стойността да е броят на възникването на този конкретен идентификатор. Не съм сигурен за частта db.drop(). Както посочихте, най-вероятно ще изтрие всички MlsIds, вместо да премахне само дублиращите се. За да заобиколите това, може би първо можете да извикате drop() и след това да пресъздадете MlsId веднъж. Това ще работи ли за вас?