Apabila menggunakan mapReduce dalam mongodb, beberapa nilai tidak diproses dengan mengurangkan, yang sangat mengelirukan. Kod dahulu
db.test.mapReduce( function () { emit({ host: this.host, os: this.os, computed_on_date: this.computed_on_date, uid: this.uid }, {data: this.os}); }, function (key, value) { return {result: 1}; }, { out: "a" } )
Data yang sepatutnya dikeluarkan ialah
"_id" : { "host" : "www.ddc.com", "os" : "android", "computed_on_date" : "2017-04-19", "uid" : "0ae71c7\ne-7da6-9051-ec6c-49dc671b4e3a" }, "value" : { "result" : 1 }
Data output sebenar ialah
"_id" : { "host" : "www.ddc.com", "os" : "android", "computed_on_date" : "2017-04-19", "uid" : "0ae71c7\ne-7da6-9051-ec6c-49dc671b4e3a" }, "value" : { "data" : "android" }
Saya sangat keliru Apabila kunci keadaan yang dipancarkan kurang daripada 4, ia akan dipaparkan seperti biasa Jika lebih daripada 3 atau keadaan pertanyaan ditambah, proses pengurangan tidak akan dilakukan.
Soalan lain ialah, apabila mapReduce mempunyai pertanyaan, patutkah ia memproses pertanyaan terlebih dahulu atau memproses pengurangan dan kemudian memproses pertanyaan dalam hasilnya
Adalah disyorkan untuk menggunakan pengagregatan. Berbanding dengan MR, pengagregatan ialah ciri kelas pertama MongoDB.
Untuk rujukan.
Suka MongoDB! Berseronoklah!