MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Peta MongoDB()

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb:bagaimana saya bisa melihat waktu eksekusi untuk perintah agregat?

  2. Meminta array array di MongoDB

  3. Hitung nilai rata-rata dokumen mongodb

  4. Cara Membuat Indeks Case-Insensitive di MongoDB

  5. Bagaimana cara mempercepat Sisipan MongoDB/detik?