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/