MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Aktualisieren von verschachtelten Arrays in MongoDB über die Mongo-Shell

Sie stoßen direkt auf eine der aktuellen Einschränkungen von MongoDB. Das Problem besteht darin, dass die Engine mehrere Positionsoperatoren nicht unterstützt. Siehe diese Mehrfachverwendung des Positionsoperators „$“ zum Aktualisieren verschachtelter Arrays

Dazu gibt es ein offenes Ticket:https://jira.mongodb.org/browse/SERVER-831 (dort auch erwähnt)

Sie können auch dieses lesen, wie Sie Ihr Datenmodell ändern können:Verschachtelte Arrays in Mongodb aktualisieren

Wenn es für Sie machbar ist, können Sie Folgendes tun:

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

Aber Sie können nicht:

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