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

Tambahkan Unik hanya ke array dan terus perbarui jumlah bidang

Untuk jenis operasi ini, Anda tidak boleh menggunakan $addToSet karena tentu saja $inc akan terjadi terlepas dari apakah ada yang ditambahkan ke array ( "set" ) atau tidak.

Sebagai gantinya, uji larik dengan $ne operator dalam kueri:

db.collection.update(
    { "unique_array": { "$ne": 18 } },    <-- existing element
    { 
        "$push": { "unique_array": 18 },
        "$inc": { "size_of_array": 1 }
    }
)

Hal yang sama berlaku untuk menghapus anggota array, tetapi tentu saja kali ini Anda menguji kehadiran dengan kesetaraan:

db.collection.update(
    { "unique_array": 18 },    <-- existing element
    { 
        "$pull": { "unique_array": 18 },
        "$inc": { "size_of_array": -1 }
    }
)

Karena kondisi kueri harus cocok, jika elemen larik sudah ada saat menambahkan maka tidak ada kecocokan dan selain itu $push atau $inc operasi dijalankan. Dan hal yang sama berlaku untuk $pull kasus di mana elemen tidak ada dalam array.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoid hapus banyak dengan batas

  2. Bagaimana cara mengonversi dari string ke tipe data tanggal?

  3. windows:Rails:kesalahan saat menginstal bson_ext

  4. Masalah duplikasi Mongo DB saat menggunakan pengurutan dengan batas dan lewati dalam agregasi

  5. Apakah boleh meminta MongoDB beberapa kali per permintaan?