sql >> Database >  >> NoSQL >> MongoDB

MongoDB werkt meerdere records van array bij

U kunt niet meerdere array-elementen in één updatebewerking wijzigen. U moet de update dus herhalen om documenten te migreren waarvoor meerdere array-elementen moeten worden gewijzigd. U kunt dit doen door elk document in de verzameling te doorlopen en herhaaldelijk een update toe te passen met $elemMatch totdat alle relevante opmerkingen in het document zijn vervangen, bijvoorbeeld:

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

Merk op dat als efficiëntie van deze bewerking een vereiste is voor uw toepassing, u uw schema moet normaliseren zodat de locatie van de avatar van de gebruiker wordt opgeslagen in een enkel document, in plaats van in elke opmerking.



  1. Verificatiefout tijdens het opslaan naar mongodb

  2. Zoek in de hele collectie (mongodb) met nodejs

  3. Spring Data Reactive Repositories met MongoDB

  4. Apache HBase I/O – HFile