私はmongoDBを使用していませんが、mapreduceを使用しています。 mapreduce関数に関しては正しい方向に進んでいると思います。 0と空の文字列を除外するには、マップ関数自体にチェックを追加します。
のようなものm = function () {
if(this.MlsId!=0 && this.MlsId!="") {
emit(this.MlsId, 1);
}
}
そして、reduceはキーと値のペアを返す必要があります。したがって、次のようになります。
r = function(k, vals) {
emit(k,Arrays.sum(vals);
}
この後、キーがMlsIdであり、値がこの特定のIDが発生する時間の数であるように、出力にキーと値のペアのセットが必要です。 db.drop()の部分についてはよくわかりません。ご指摘のとおり、重複するMlsIdだけを削除するのではなく、おそらくすべてのMlsIdを削除します。これを回避するには、最初にdrop()を呼び出してから、MlsIdを1回再作成します。それはあなたのために働きますか?