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

Perbarui elemen dalam array jika ada yang lain masukkan elemen baru dalam array itu di MongoDb

Gunakan $addToSet bukannya $push .

db.push.update(
    { _id: 5 },
    { $addToSet: { "quizzes": {"wk": 6.0, "score": 8.0}, "play": {"wk": 6.0, "score": 8.0} } }
)

EDIT:

Tidak ada pendekatan bawaan sederhana untuk pembaruan sub-dokumen bersyarat dalam bidang larik, menurut properti tertentu. Namun, trik kecil dapat melakukannya dengan menjalankan dua perintah secara berurutan.

Misalnya:Jika kita ingin memperbarui quizzes bidang dengan objek { "wk": 7.0, "score": 8.0 } , kita dapat melakukannya dalam dua langkah:

Langkah-1: $pull keluarkan sub-dokumen dari quizzes larik di mana "wk": 7.0 . (Tidak ada yang terjadi jika sub-dokumen yang cocok tidak ditemukan ).

db.push.update(
    { _id: 5 },
    { $pull: { "quizzes": { "wk": 7.0 } } }
)

Langkah-2: $addToSet sub-dokumen.

db.push.update(
    { _id: 5 },
    { $addToSet: { "quizzes": {"wk": 7.0, "score": 8.0} } }
)

Anda dapat menggabungkan dua perintah pembaruan di atas menggunakan bulk.find().update()



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb:kueri untuk periode waktu antara dua bidang tanggal

  2. Update/upser luwak?

  3. gagal dengan kesalahan 10068:operator tidak valid:$oid

  4. Bagaimana cara menyimpan hasil dari formulir yang dibuat secara dinamis di MongoDb?

  5. mongodb 3.x driver kompatibilitas Android