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

Bagaimana Parameter arrayFilters Bekerja di MongoDB

Di MongoDB, saat Anda memperbarui dokumen yang berisi array, Anda memiliki opsi untuk menggunakan arrayFilters parameter.

arrayFilters parameter memungkinkan Anda untuk menentukan larik dokumen filter yang menentukan elemen larik mana yang akan dimodifikasi.

Dalam dokumen pembaruan, gunakan $[<identifier>] operator posisi terfilter, yang mengidentifikasi elemen larik yang cocok dengan arrayFilters kondisi untuk operasi pembaruan.

Sintaks

Sintaksnya seperti ini:

{ <update operator>: { "<array>.$[<identifier>]" : value } },
{ arrayFilters: [ { <identifier>: <condition> } ] }

Jadi misalnya, ketika digunakan dengan updateMany() caranya seperti ini:

db.collection.updateMany(
   { <query conditions> },
   { <update operator>: { "<array>.$[<identifier>]" : value } },
   { arrayFilters: [ { <identifier>: <condition> } ] }
)

Contoh

Misalkan kita memiliki koleksi yang disebut players dengan dokumen sebagai berikut:

{ "_id" : 1, "scores" : [ 1, 5, 17 ] }
{ "_id" : 2, "scores" : [ 8, 17, 18 ] }
{ "_id" : 3, "scores" : [ 15, 11, 8 ] }

Kita bisa menggunakan arrayFilters parameter untuk memperbarui hanya elemen larik yang memiliki nilai lebih tinggi dari jumlah tertentu.

Contoh:

db.players.updateMany(
   { scores: { $gte: 10 } },
   { $set: { "scores.$[e]" : 10 } },
   { arrayFilters: [ { "e": { $gte: 10 } } ] }
)

Hasil:

{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }

Pesan tersebut memberi tahu kita bahwa tiga dokumen dicocokkan dan dimodifikasi.

Begini tampilan dokumennya sekarang.

db.players.find()

Hasil:

{ "_id" : 1, "scores" : [ 1, 5, 10 ] }
{ "_id" : 2, "scores" : [ 8, 10, 10 ] }
{ "_id" : 3, "scores" : [ 10, 10, 8 ] }

Kita dapat melihat bahwa semua nilai yang sebelumnya lebih besar atau sama dengan 10 sekarang menjadi 10.

Dalam hal ini, saya menggunakan e sebagai <identifier> . Perhatikan bahwa <identifier> harus dimulai dengan huruf kecil dan hanya berisi karakter alfanumerik.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $dalam Operator Pipa Agregasi

  2. php mongodb temukan entri ke-n dalam koleksi

  3. Dapatkan catatan terbaru dari koleksi mongodb

  4. Konversi Dokumen BSON ke JSON di Java

  5. Perbarui item dalam array yang ada dalam array