Du måste inkludera arrayfältet som en del av frågedokumentet för att kunna använda positional operator
.
Om du till exempel vill uppdatera det första arrayelementet, dvs. med { "attributes.name": "x" }
sedan kan du följa mönstret:
db.spaces.update(
{ "attributes.name": "x" }, // <-- the array field must appear as part of the query document.
{ "$set": { "attributes.$.weight": 2 } },
{ "multi": true }
)
För de nyare MongoDB-versionerna 3.2.X
, kan du använda updateMany()
metod för att uppdatera flera dokument inom samlingen baserat på filtret ovan.