使用猫鼬更新对象中数组内的值

时间:2018-09-20 04:34:03

标签: node.js mongodb mongoose

嗨,我想将所选图像的状态更改为“ N”

以下是我的json:

docker-registry.default.svc:5000

我尝试了以下查询:

/registry/docker/registry/v2

在media_id中,这些ID的ID数组只有状态必须更改。

我的问题是值正在更新,但数组中的第一个值并非全部

2 个答案:

答案 0 :(得分:1)

这听起来像您想使用arrayFilters

db.inspectionmedia.update({}, {
    $set : { 'images.$[i].status' : 'N'} 
}, {
    multi: true,
    arrayFilters: [
        {'i._id': { $in:media_id}}
    ]
}, function(err,output){
    if(err){
        console.log(err)
        res.json("err");
    }
    else{
        res.json("ok");  
    }
});

答案 1 :(得分:1)

MongoDB引入了过滤后的位置运算符$ [],可用于更新匹配数组过滤条件的数组的多个元素。您可以在此处了解有关此运算符的更多信息:

https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/

      db.inspectionmedia.update(
        {$set: { 'images.$[element].status' : 'N'} },
        {multi:true,
         arrayFilters: [
           {'element._id': { $in:media_id}}
         ]
        },
        function(err,updated){
           console.log(updated);
       });