MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Erro do Mongodb:o operador posicional não encontrou a correspondência necessária na consulta


Você precisa incluir o campo array como parte do documento de consulta para usar o positional operator .

Por exemplo, se você deseja atualizar o primeiro elemento da matriz, ou seja, com { "attributes.name": "x" } então você pode seguir o padrão:
db.spaces.update(
   { "attributes.name": "x" }, // <-- the array field must appear as part of the query document.
   { "$set": { "attributes.$.weight": 2 } },
   { "multi": true }
)

Para as versões mais recentes do MongoDB 3.2.X , você pode usar o updateMany() método para atualizar vários documentos dentro da coleção com base no filtro acima.