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

Nilai unik luwak dalam array objek bersarang

Indeks unik pada bidang larik memaksa bahwa nilai yang sama tidak dapat muncul dalam larik lebih dari satu dokumen dalam koleksi, tetapi tidak mencegah nilai yang sama muncul lebih dari sekali dalam larik dokumen tunggal. Jadi, Anda perlu memastikan keunikan saat menambahkan elemen ke array.

Gunakan $addToSet operator untuk menambahkan nilai ke array hanya jika nilainya belum ada.

Group.updateOne({name: 'admin'}, {$addToSet: {users: userOid}}, ...

Namun, jika users array berisi objek dengan banyak properti dan Anda ingin memastikan keunikan hanya pada salah satunya (uid dalam hal ini), maka Anda perlu mengambil pendekatan lain:

var user = { uid: userOid, ... };
Group.updateOne(
    {name: 'admin', 'users.uid': {$ne: user.uid}}, 
    {$push: {users: user}},
    function(err, numAffected) { ... });

Apa yang dilakukan adalah memenuhi syarat $push pembaruan hanya terjadi jika user.uid belum ada di uid bidang salah satu elemen users . Jadi meniru $addToSet perilaku, tetapi hanya untuk uid .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoDB/luwak:unik jika bukan nol

  2. 9 Fitur Baru MongoDB – Wajib Belajar Menguasai MongoDB

  3. Memperbarui array bersarang di dalam array mongodb

  4. MongoDB $exp

  5. urutkan berdasarkan panjang string di Mongodb/pymongo