我正在尝试更新文档中要根据大于条件执行更新操作的文档中的数组。
这是我的文件:
{
_id:some_id,
name:"test",
data:[
{ __id:1,
__data:[{a:"something"}]
},
{ __id:2,
__data:[{a:"something"}]
},
{ __id:3,
__data:[{a:"something"}]
}....
]
}
如果它的__id大于2,我想从数据数组的每个元素的__id中减去1
当前我正在执行此操作,但是它不起作用
db.collection('collection_name').update({name:"test","data.__id":{$gt:2}},{$inc:{"data.__id":-1}},{multi:true})
答案 0 :(得分:1)
您必须使用$ positional
运算符来更新数组中的值
db.getCollection('test').update(
{ "name": "test" , "data.__id": { "$gt": 2 }},
{ "$inc": { "data.$.__id": -1 }},
{ "multi": true }
)