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

MongoDB memperbarui banyak catatan array

Anda tidak dapat mengubah beberapa elemen larik dalam satu operasi pembaruan. Jadi, Anda harus mengulangi pembaruan untuk memigrasikan dokumen yang memerlukan beberapa elemen larik untuk dimodifikasi. Anda dapat melakukan ini dengan mengulangi setiap dokumen dalam koleksi, berulang kali menerapkan pembaruan dengan $elemMatch sampai semua komentar yang relevan diganti pada dokumen, misalnya:

db.collection.find().forEach( function(doc) {
  do {
    db.collection.update({_id: doc._id,
                          comments:{$elemMatch:{user:"test",
                                                avatar:{$ne:"new_avatar.jpg"}}}},
                         {$set:{"comments.$.avatar":"new_avatar.jpg"}});
  } while (db.getPrevError().n != 0);
})

Perhatikan bahwa jika efisiensi operasi ini merupakan persyaratan untuk aplikasi Anda, Anda harus menormalkan skema sedemikian rupa sehingga lokasi avatar pengguna disimpan dalam satu dokumen, bukan di setiap komentar.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hitung berdasarkan Kondisi dan bagi dengan # catatan untuk interval waktu

  2. Lewati middleware cap waktu untuk pembaruan tertentu di Mongoose

  3. mongodb agregat $lookup vs menemukan dan mengisi

  4. Objek koleksi bukan kesalahan yang dapat dipanggil dengan PyMongo

  5. Pagination MongoDB pada array - Periksa apakah $slice mencapai awal array