Jeg har ikke brugt mongoDB, men jeg har brugt mapreduce. Jeg tror, du er på rette vej med hensyn til mapreduce-funktionerne. For at udelukke han 0 og tomme strenge, kan du tilføje et flueben i selve kortfunktionen.. noget som
m = function () {
if(this.MlsId!=0 && this.MlsId!="") {
emit(this.MlsId, 1);
}
}
Og reducer bør returnere nøgle-værdi-par. Så det burde være:
r = function(k, vals) {
emit(k,Arrays.sum(vals);
}
Efter dette bør du have et sæt nøgleværdi-par i output, således at nøglen er MlsId og værdien er antallet af gange, dette særlige ID forekommer. Jeg er ikke sikker på db.drop() delen. Som du påpegede, vil det højst sandsynligt slette alle MlsId'er i stedet for kun at fjerne de duplikerede. For at komme uden om dette, kan du måske først kalde drop() og derefter genskabe MlsId én gang. Vil det virke for dig?