MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB aktualizuje wiele rekordów tablicy

Nie można modyfikować wielu elementów tablicy w jednej operacji aktualizacji. W związku z tym będziesz musiał powtórzyć aktualizację, aby przenieść dokumenty, które wymagają modyfikacji wielu elementów tablicy. Możesz to zrobić, przechodząc przez każdy dokument w kolekcji, wielokrotnie stosując aktualizację za pomocą $elemMatch dopóki w dokumencie nie zostaną zastąpione wszystkie istotne komentarze, np.:

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

Pamiętaj, że jeśli wydajność tej operacji jest wymagana dla twojej aplikacji, powinieneś znormalizować swój schemat tak, aby lokalizacja awatara użytkownika była przechowywana w pojedynczym dokumencie, a nie w każdym komentarzu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak skonfigurować AppArmor dla zestawów replik MongoDB?

  2. mongodb Nie można zastosować modyfikatora $pull/$pullAll do nie-tablicy, Jak usunąć element tablicy

  3. Jak napisać warunek dopasowania dla wartości tablicowych?

  4. docker-compose, aby uruchomić django z mongodb

  5. Kolejność wyszukiwania produktów w podciągu MongoDB według najwyższego dopasowania