sql >> Databasteknik >  >> NoSQL >> MongoDB

Uppdatera kapslade arrayobjekt baserat på en egenskap i MongoDB

Du måste använda $ positional operatorn för att uppdatera ett arrayelement och med multi: true alternativ kan du uppdatera flera dokument med samma matchning

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

och med 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 }
)


  1. MongoDB atomic findOrCreate:findOne, infoga om det inte finns, men uppdatera inte

  2. Vilken version av MongoDB är installerad på Ubuntu

  3. Java, MongoDB:Hur uppdaterar man varje objekt samtidigt som man itererar en enorm samling?

  4. Mongoose lovar dokumentation säger att frågor inte är löften?