mongodbupdate多层嵌套数组,This is more or less my current schema: { "_id" : 1 "user_id": 1, "message" : "Yes" "translations" : [ { "destination" : "fr", "text": "Oui", "rating" : [ { "user_id" : 1, "rating" : 1 }, { "user_id" : 2, "rating" : 1 } ] } ] }
这个更新语句会报错,目前不支持多个$占位符
db.getCollection('message').update({ '_id': 1, 'translations.destination': 'fr', 'translations.rating.user_id':'1' }, { '$set': { "translations.$.rating.$.rating": 5 } }
最好修改数据格式,采用key-value格式
{ "_id" : 1 "user_id": 1, "message" : "Yes" "translations" : { "fr": { "destination" : "fr", "text": "Oui", "rating" : [ { "user_id" : 1, "rating" : 1 }, { "user_id" : 2, "rating" : 1 } } }, "en": {...} ] }
这样就可以更新了
“translations.fr.rating.$.rating”: 5
方法来自于 https://pythonolyk.wordpress.com/2016/01/17/mongodb-update-nested-array-using-positional-operator/