MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mise à jour des tableaux imbriqués dans mongoDB via mongo shell

Vous touchez directement l'une des limitations actuelles de MongoDB.Le problème est que le moteur ne supporte pas plusieurs opérateurs positionnels.Voir cet Utilisation multiple de l'opérateur positionnel `$` pour mettre à jour les tableaux imbriqués

Il existe un ticket ouvert pour cela :https://jira.mongodb.org/browse/SERVER-831 (également mentionné ici)

Vous pouvez également lire celui-ci sur la façon de modifier votre modèle de données :Mise à jour des tableaux imbriqués dans mongodb

Si c'est faisable pour vous, vous pouvez faire :

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>}})

Mais vous ne pouvez pas faire :

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