Nepoužil jsem mongoDB, ale použil jsem mapreduce. Myslím, že jste na správné cestě, pokud jde o funkce mapreduce. Chcete-li vyloučit 0 a prázdné řetězce, můžete přidat kontrolu v samotné funkci mapy.. něco jako
m = function () {
if(this.MlsId!=0 && this.MlsId!="") {
emit(this.MlsId, 1);
}
}
A snížení by mělo vrátit páry klíč–hodnota. Takže by to mělo být:
r = function(k, vals) {
emit(k,Arrays.sum(vals);
}
Poté byste měli mít na výstupu sadu párů klíč–hodnota, takže klíč je MlsId a hodnota je počet výskytů tohoto konkrétního ID. Nejsem si jistý částí db.drop(). Jak jste uvedli, s největší pravděpodobností odstraní všechny MlsId namísto odstranění pouze duplicitních. Chcete-li to obejít, možná můžete nejprve zavolat drop() a poté jednou znovu vytvořit MlsId. Bude to pro vás fungovat?