我想用对象数组生成的查询更新多个文档。但是我发现只有一个文件被更改了。
var split = num.toString().split(',');
var list = new Array;
for ( var i in split ) {
var pk = {
"_id" : split[i],
"id" : user.id
}
list.push(pk);
}
var vm = {name:"robert",category:"media"};
database.bookModel.findOneAndUpdate(list, vm, { multi: true }, function (err, result) {
....
以下方法我无法关注更新多个文档。 我正在使用findOneAndUpdate查询,我发现只会更改一条记录。
我做错了吗?有没有办法在对象数组中使用标准?
答案 0 :(得分:0)
使用批量查找和更新
var bulk = db.Model.initializeUnorderedBulkOp();
var vm = {
name: "robert",
category: "media"
};
for (var i in split) {
var pk = {
"_id": split[i],
"id": user.id
}
bulk.find(pk).update({
$set: vm
});
}
bulk.execute();
答案 1 :(得分:0)
您正在使用'findOneAndUpdate'它只会更新一个文档,尝试'更新',您应该没问题。
答案 2 :(得分:0)
您需要像这样更改查询:
database.bookModel.update(list, vm, {
multi: true
}).then(() => {
res.status(200).json({
message: 'Data updated successfully!'
})
}).catch((err) => {
res.status(500).json({
error: err
});
});