按ID更新许多记录

时间:2017-08-22 17:14:44

标签: node.js mongodb mongoose

我正在项目中使用mongoose,我有以下问题: 我需要通过其ID更新许多记录(这些ID存储在数组中),我尝试过这种方法:

 Collection.update({$in:{"_id":ids}}, {$set:{data_of_id}}, {upsert : true},
                 {"multi": true}, function(err, res){

                if(err){ console.log(err) };
                console.log(res);               
 });

ids []是我需要更新的集合的ID,而data_of_id是将替换旧记录的新记录。但我不知道如何将这些ID与数组中的每个记录相关联。我试图将更新查询也放到foreach方法中,但没有成功。上面的查询不会返回任何错误或消息,已执行被调用的方法但不执行查询。

2 个答案:

答案 0 :(得分:1)

$in语法不正确,应该是:

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

所以,你应该这样写:

Collection.update({_id: {$in: ids}}, ...);

答案 1 :(得分:0)

我已经通过这种方式解决了这个问题:

        datas.forEach(function(data){

            Collection.update({"_id":data._id},
                data, {upsert : true},{new : true}, function(err, res){
                if(err) console.log(err);
            });

        });