sql >> Databasteknik >  >> NoSQL >> MongoDB

Uppdatering av kapslade arrayer i mongoDB via mongo-skal

Du träffar direkt en av de nuvarande begränsningarna för MongoDB. Problemet är att motorn inte stöder flera positionsoperatorer. Se denna Multipel användning av positionsoperatorn `$` för att uppdatera kapslade arrayer

Det finns en öppen biljett för detta:https://jira.mongodb.org/browse/SERVER-831 (nämns också där)

Du kan också läsa den här om hur du ändrar din datamodell:Uppdatering av kapslade arrayer i mongodb

Om det är möjligt för dig kan du göra:

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

Men du kan inte göra:

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


  1. Den snabbaste MongoDB på Azure!

  2. Hybridmoln vs Full Public Cloud - För- och nackdelar

  3. MongoDB sammansatt indexanvändning

  4. Mongoose, sortera sökfrågan efter ifyllt fält