Express 更新mongoose中的多个文档(节点JS)

Express 更新mongoose中的多个文档(节点JS),express,mongoose,mongodb-query,nodes,Express,Mongoose,Mongodb Query,Nodes,我想用对象数组进行的查询更新多个文档。然而,我发现只有一份文件被更改 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:"med

我想用对象数组进行的查询更新多个文档。然而,我发现只有一份文件被更改

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查询,发现只有一条记录将被更改


我做错什么了吗?有没有办法在对象数组中使用条件?

使用批量查找和更新

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();

您正在使用“findOneAndUpdate”,它只会更新一个文档,请尝试“更新”,您应该会没事的。

您需要像这样更改查询:

database.bookModel.update(list, vm, {
    multi: true
}).then(() => {
    res.status(200).json({
        message: 'Data updated successfully!'
    })
}).catch((err) => {
    res.status(500).json({
        error: err
    });
});

谢谢。多亏了你,我才得以解决我的问题:)谢谢你的建议。下次我将代表“findOneAndUpdate”使用“update”: