【问题标题】:To update multiple documents in mongoose (Node JS)在猫鼬(Node JS)中更新多个文档
【发布时间】:2018-08-20 05:31:19
【问题描述】:

我想使用对象数组进行的查询来更新多个文档。但是我发现只有一个文件被更改了。

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

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

【问题讨论】:

    标签: express mongoose mongodb-query nodes


    【解决方案1】:

    使用批量查找和更新,

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

    【讨论】:

    • 非常感谢。我能够解决我的问题谢谢你:)
    【解决方案2】:

    你正在使用'findOneAndUpdate'它只会更新一个文档,试试'update',你应该没问题。

    【讨论】:

    • 感谢您的建议。下次我将使用“update”代表“findOneAndUpdate”。 :)
    【解决方案3】:

    您需要像这样更改您的查询:

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

    【讨论】:

      猜你喜欢
      • 2020-10-18
      • 1970-01-01
      • 2011-10-05
      • 2020-06-27
      • 2018-09-08
      • 2018-01-22
      • 2013-12-04
      • 2016-05-24
      • 1970-01-01
      相关资源
      最近更新 更多