MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb-Fehler:Der Positionsoperator hat die in der Abfrage benötigte Übereinstimmung nicht gefunden

Sie müssen das Array-Feld als Teil des Abfragedokuments einschließen, um positional operator .

Wenn Sie beispielsweise das erste Array-Element aktualisieren möchten, z. B. mit { "attributes.name": "x" } dann könnten Sie dem Muster folgen:

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 die neueren MongoDB-Versionen 3.2.X , könnten Sie den updateMany() Methode, um mehrere Dokumente innerhalb der Sammlung basierend auf dem obigen Filter zu aktualisieren.