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

Atualizando arrays aninhados no mongoDB via shell mongo


Você está atingindo diretamente uma das limitações atuais do MongoDB. O problema é que o mecanismo não suporta vários operadores posicionais. Veja isto Uso múltiplo do operador posicional `$` para atualizar arrays aninhados

Existe um ticket aberto para isso:https://jira.mongodb.org/browse/SERVER-831 (mencionado também lá)

Você também pode ler este sobre como alterar seu modelo de dados:Atualizando matrizes aninhadas no mongodb

Se for viável para você, você pode fazer:
db.collection.update({_id:2,"event_type.name":'MT' ,"event_type.language.name":'English'},{$set:{"event_type.0.language.$.count":<number>}})

db.collection.update({_id:2,"event_type.name":'MT' ,"event_type.language.name":'English'},{$set:{"event_type.$.language.0.count":<number>}})

Mas você não pode fazer:
db.collection.update({_id:2,"event_type.name":'MT' ,"event_type.language.name":'English'},{$set:{"event_type.$.language.$.count":<number>}})