sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB uppdaterar fält i kapslad array

Det här problemet har lösts. Funktionen för uppdatering av fält inom kapslad array av objekt är tillgänglig i MongoDB 3.6+ versioner. Titta på positionsoperatorer (alla och med identifierare) här.

//Update all docs in collection matching photo name "play" to "play photo"
db.collectioname.update(
    {},
    { $set: { "albums.$[].photos.$[photo_field].name": "play photo" } },
    { arrayFilters: [  {"photo_field.name": "play"} ], multi: true}
);

//Update this specific doc given in question matching photo name "play" to "play photo"
db.collectioname.update(
    {"_id" : ObjectId("4f41a5c7c32810e404000000")},
    { $set: { "albums.$[].photos.$[photo_field].name": "play photo" } },
    { arrayFilters: [  {"photo_field.name": "play"} ]}
);

Det här är till hjälp för människor som kommer hit efter MongoDB 3.6



  1. Fyll i saknade datum i register

  2. Redis lua när ska man verkligen använda det?

  3. AOF och RDB säkerhetskopior i redis

  4. Högpresterande MongoDB-kluster på Amazon EC2