Di MongoDB, cursor.map() metode menerapkan fungsi ke setiap dokumen yang dikunjungi oleh kursor dan menggabungkan nilai yang dikembalikan dalam larik.
Sintaks
Sintaksnya seperti ini:
db.collection.find().map(<function>)
Dimana collection adalah nama koleksi tempat dokumen berada.
Dan di mana <function> adalah fungsi untuk diterapkan ke setiap dokumen yang dikunjungi oleh kursor.
Contoh
Misalkan kita memiliki koleksi yang disebut products yang berisi tiga dokumen berikut:
{ "_id" : 1, "product" : "Left Handed Screwdriver" }
{ "_id" : 2, "product" : "Left Blinker" }
{ "_id" : 3, "product" : "Long Weight" }
Kita dapat menggunakan map() metode dalam hubungannya dengan find() metode untuk mengulangi dokumen-dokumen itu, sambil menerapkan fungsi ke setiap dokumen.
Contoh:
db.products.find().map(
function(p) {
p = p.product.replace("Left","Right");
return p;
}
); Hasil:
[ "Right Handed Screwdriver", "Right Blinker", "Long Weight" ]
Dalam hal ini, kami mengulangi melalui kursor, dan mengganti contoh string Left dengan Right . Kami kemudian mengembalikan hasilnya.
Hasilnya dikembalikan sebagai array.
Kesalahan?
Jika Anda mendapatkan kesalahan, seperti ini:
uncaught exception: TypeError: db.products.findOne(...).map is not a function : @(shell):1:1
Pastikan Anda menggunakan find() dan bukan findOne() .
findOne() metode mengembalikan dokumen yang sebenarnya dan bukan kursor. Oleh karena itu, map() tidak akan bekerja dengan findOne() . Juga, meskipun berhasil, findOne() hanya mengembalikan satu dokumen, dan oleh karena itu, tidak perlu mengulangi beberapa dokumen.