MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Errore Mongodb:l'operatore posizionale non ha trovato la corrispondenza necessaria dalla query

È necessario includere il campo dell'array come parte del documento di query per utilizzare positional operator .

Ad esempio, se vuoi aggiornare il primo elemento dell'array cioè con { "attributes.name": "x" } quindi potresti seguire lo schema:

db.spaces.update(
   { "attributes.name": "x" }, // <-- the array field must appear as part of the query document.
   { "$set": { "attributes.$.weight": 2 } },
   { "multi": true }
)

Per le versioni più recenti di MongoDB 3.2.X , potresti utilizzare updateMany() metodo per aggiornare più documenti all'interno della raccolta in base al filtro sopra.