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.