MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB актуализира множество записи на масив

Не можете да модифицирате множество елементи на масив в една операция за актуализиране. Следователно ще трябва да повторите актуализацията, за да мигрирате документи, които се нуждаят от промяна на множество елементи от масив. Можете да направите това, като преминете през всеки документ в колекцията, многократно прилагайки актуализация с $elemMatch докато в документа бъдат заменени всички съответни коментари, напр.:

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);
})

Имайте предвид, че ако ефективността на тази операция е изискване за вашето приложение, трябва да нормализирате вашата схема, така че местоположението на аватара на потребителя да се съхранява в един документ, а не във всеки коментар.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Позоваване на друга схема в Mongoose

  2. Отчитане на MongoDB и BIRT?

  3. По-бърза ли е рамката на Mongodb Aggregation от map/reduce?

  4. актуализира дълбоко вложен масив mongodb

  5. Премахване на елемента на масива в mongoDB въз основа на позицията на елемента