MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Aggiornamento di array nidificati in mongoDB tramite mongo shell

Stai colpendo direttamente una delle attuali limitazioni di MongoDB. Il problema è che il motore non supporta diversi operatori posizionali. Vedi questo Uso multiplo dell'operatore posizionale `$` per aggiornare gli array nidificati

C'è un ticket aperto per questo:https://jira.mongodb.org/browse/SERVER-831 (menzionato anche lì)

Puoi anche leggere questo su come modificare il tuo modello di dati:Aggiornamento di array nidificati in mongodb

Se è fattibile per te, puoi fare:

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

Ma non puoi farlo:

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