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

MongoDB $addToSet

Di MongoDB, $addToSet operator menambahkan nilai ke larik kecuali nilainya sudah ada di larik.

Ini mirip dengan $push operator, kecuali $push menambahkan nilai meskipun nilainya sudah ada.

Contoh

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

db.products.find()

Hasil:

{ "_id" : 1, "product" : "Bat", "sizes" : [ "S", "M", "L" ] }
{ "_id" : 2, "product" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "product" : "Cap", "sizes" : [ "S", "M", "L", "XL" ] }

Kita bisa menggunakan $addToSet untuk menambahkan nilai ke salah satu array tersebut.

Contoh:

db.products.update(
   { _id: 1 },
   { $addToSet: { sizes: "XL" } }
)

Keluaran:

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

Mari kita lihat lagi koleksi kami untuk memverifikasi perubahan:

db.products.find()

Hasil:

{ "_id" : 1, "product" : "Bat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 2, "product" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "product" : "Cap", "sizes" : [ "S", "M", "L", "XL" ] }

Nilai Duplikat

Jika Anda mencoba memasukkan nilai yang sudah ada dalam array, tidak ada yang terjadi. Dengan kata lain, $addToSet hanya memasukkan nilai jika belum ada.

Berikut ini contoh mencoba memasukkan nilai yang sudah ada.

db.products.update(
   { _id: 1 },
   { $addToSet: { sizes: "XL" } }
)

Keluaran:

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

Pesan ini memberitahu kita bahwa ada satu dokumen yang cocok (yaitu dokumen dengan _id dari 1 ), tetapi tidak ada modifikasi.

Pada contoh sebelumnya kita melihat "nModified" : 1 , tetapi dalam contoh ini kita melihat "nModified" : 0 . Itu karena nilainya tidak ada saat kita menyisipkannya di contoh sebelumnya, tapi di contoh ini sudah ada.

Kami dapat memverifikasi ini dengan melihat koleksi lagi:

db.products.find()

Hasil:

{ "_id" : 1, "product" : "Bat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 2, "product" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "product" : "Cap", "sizes" : [ "S", "M", "L", "XL" ] }

Tambahkan Beberapa Nilai

Anda dapat menggunakan $each pengubah untuk menambahkan beberapa nilai ke array.

Contoh:

db.products.update(
   { _id: 2 },
   { 
     $addToSet: { 
        sizes: {
           $each: [ "XXL", "XXXL" ]
        }
      } 
    }
)

Keluaran:

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

Sekarang mari kita periksa kembali koleksinya:

db.products.find()

Hasil:

{ "_id" : 1, "product" : "Bat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 2, "product" : "Hat", "sizes" : [ "S", "L", "XL", "XXL", "XXXL" ] }
{ "_id" : 3, "product" : "Cap", "sizes" : [ "S", "M", "L", "XL" ] }

Kita dapat melihat bahwa dua nilai ditambahkan ke larik di dokumen 2 seperti yang diharapkan.

Menambahkan Array ke Array

Anda juga dapat menambahkan seluruh array ke array. Saat Anda melakukan ini, seluruh larik ditambahkan sebagai larik terpisahnya sendiri.

Misalkan kita memiliki koleksi seperti ini:

db.foo.find()

Hasil:

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

Kita dapat menambahkan array ke array seperti ini:

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

Keluaran:

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

Cek koleksinya:

db.foo.find()

Hasil:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoDB berbeda &di mana dalam kueri yang sama?

  2. MongoDB $toLong

  3. menangani @ dalam string koneksi mongodb

  4. cara mengelola bidang _id saat menggunakan POCO dengan driver mongodb c#

  5. Mengelola dokumen dan koleksi MongoDB secara visual