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.