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

MongoDB $pullAll

Di MongoDB, Anda dapat menggunakan $pullAll operator untuk menghapus semua instance dari nilai yang ditentukan dari larik yang ada.

Gunakan $pullAll dalam hubungannya dengan metode seperti update() , updateOne() , atau updateMany() untuk memperbarui dokumen yang ditentukan dengan perubahan.

Contoh

Misalkan kita memiliki koleksi dengan dokumen-dokumen berikut:

{ "_id" : 1, "bar" : [ 1, 7, 2, 3, 8, 7, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }

Dan katakanlah kita ingin menghapus semua nilai 7 dari larik di dokumen 1.

Kita bisa melakukan ini:

db.foo.update( 
  { _id: 1 }, 
  { $pullAll: { bar: [ 7 ] } } 
)

Keluaran:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Pesan itu memberi tahu kita bahwa satu dokumen cocok dan satu (yaitu dokumen yang sama) telah dimodifikasi.

Yuk intip koleksinya sekarang:

db.foo.find()

Hasil:

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

Kita dapat melihat bahwa larik di dokumen 1 memiliki semua 7 nilai dihapus seperti yang ditentukan.

Hapus Beberapa Nilai

Argumen yang kami berikan ke $pullAll adalah sebuah array, sehingga kita dapat menghapus beberapa nilai dengan memisahkannya dengan koma.

Contoh:

db.foo.update( 
  { _id: 2 }, 
  { $pullAll: { bar: [ 17, 18 ] } } 
)

Keluaran:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Sekarang mari kita periksa kembali koleksinya:

db.foo.find()

Hasil:

{ "_id" : 1, "bar" : [ 1, 2, 3, 8, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }

Kita dapat melihat bahwa nilai 17 dan 18 telah dihapus dari larik di dokumen 2.

Perbarui Semua Dokumen

Anda dapat menambahkan multi: true atau gunakan updateMany() metode untuk memperbarui semua dokumen yang sesuai dengan kriteria.

Saat Anda melakukan ini, hapus kriteria pemilihan apa pun dari dokumen kueri pertama (yang menentukan dokumen mana yang akan diperbarui). Dengan kata lain, gunakan dokumen kosong sebagai argumen pertama ke update() (atau updateMany() ) metode.

Contoh:

db.foo.update( 
  { }, 
  { $pullAll: { bar: [ 1, 8 ] } },
  { multi: true }
)

Keluaran:

WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })

Dalam hal ini, kita dapat melihat bahwa tiga dokumen cocok (karena ada tiga dokumen dalam koleksi), dan ketiganya dimodifikasi (karena semuanya berisi nilai yang ditentukan).

Yuk cek lagi koleksinya:

db.foo.find()

Hasil:

{ "_id" : 1, "bar" : [ 2, 3 ] }
{ "_id" : 2, "bar" : [ 0 ] }
{ "_id" : 3, "bar" : [ 15, 11, 0, 3 ] }

Kita dapat melihat bahwa semua instance telah diperbarui seperti yang ditentukan.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengapa arah indeks penting di MongoDB?

  2. Apakah mongodb berjalan?

  3. MongoDB Temukan Kecocokan Array yang Tepat tetapi urutan tidak masalah

  4. MongoDB – Bawa Sertifikat SSL Anda Sendiri

  5. MongoDB:bagaimana menemukan 10 dokumen acak dalam koleksi 100?