我正在项目中使用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方法中,但没有成功。上面的查询不会返回任何错误或消息,已执行被调用的方法但不执行查询。
答案 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);
});
});