Saya belum pernah menggunakan mongoDB tetapi saya telah menggunakan mapreduce. Saya pikir Anda berada di jalur yang benar dalam hal fungsi mapreduce. Untuk mengecualikan dia 0 dan string kosong, Anda dapat menambahkan tanda centang di fungsi peta itu sendiri.. sesuatu seperti
m = function () {
if(this.MlsId!=0 && this.MlsId!="") {
emit(this.MlsId, 1);
}
}
Dan pengurangan harus mengembalikan pasangan nilai kunci. Jadi seharusnya:
r = function(k, vals) {
emit(k,Arrays.sum(vals);
}
Setelah ini, Anda harus memiliki satu set pasangan nilai kunci dalam output sedemikian rupa sehingga kuncinya adalah MlsId dan nilainya adalah jumlah kali ID khusus ini muncul. Saya tidak yakin tentang bagian db.drop(). Seperti yang Anda tunjukkan, kemungkinan besar akan menghapus semua MlsId daripada hanya menghapus duplikat. Untuk menyiasatinya, mungkin Anda dapat memanggil drop() terlebih dahulu dan kemudian membuat ulang MlsId sekali. Apakah itu akan berhasil untuk Anda?