MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mettre à jour les objets de tableau imbriqués en fonction d'une propriété dans MongoDB

Vous devez utiliser $ positional opérateur pour mettre à jour un élément de tableau et avec multi: true option vous pouvez mettre à jour plusieurs documents avec la même correspondance

db.collection.update(
  { 'items': { '$elemMatch': { 'itemName': 'Name 1' }}},
  { '$set': { 'items.$.itemName': 'New Name' }},
  { 'multi': true }
)

et avec le mongodb 3.6 arrayFilters

db.collection.update(
  { 'items': { '$elemMatch': { 'itemName': 'Name 1' }}},
  { '$set': { 'items.$[item].itemName': 'New Name' }},
  { 'arrayFilter': [{ 'item.itemName': 'Name 1' }], 'multi': true }
)