【问题标题】:How to update multiple documents in mongodb native nodejs driver?如何更新 mongodb 本机 nodejs 驱动程序中的多个文档?
【发布时间】:2014-01-08 13:08:26
【问题描述】:

Salam(意思是你好):)

我正在运行 mongodb 2.4.8 和 Mongo DB Native NodeJS Driver。当我使用以下函数时,只有匹配 query 的第一个文档会更新。如何更新所有匹配的文件?

function update(coll, query, update, callback){
    var options = options || {};
    MongoClient.connect('mongodb://127.0.0.1:27017/dbName', function(error, db) {
        if(error){
            return console.dir(error);
        }
        db.collection(coll).update(query, update, {w:1}, function(error, result) {
            callback(error, result);
        });
    });
}

我通过npm install mongodb命令安装了我的mongodb驱动,安装版本1.3.23,这个驱动版本支持多次更新吗?如果没有,如何安装更新版本的驱动支持多次更新?

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    您需要在 update 调用中设置 multi option 以更新所有匹配的文档,而不仅仅是第一个:

    db.collection(coll).update(query, update, {w:1, multi: true}, callback);
    

    【讨论】:

    • 谢谢,我还发现another document的更新函数既不需要回调函数也不需要{w:1},你能解释一下它们的区别吗?
    • @NasserTorabzade 该文档适用于 Mongo shell,而不是 node.js 驱动程序。但是您的代码中可能也不需要w:1
    【解决方案2】:

    您可以调用 updateMany 来实现:

    db.collection(coll).updateMany(query, update, callback);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-17
      • 2016-10-22
      • 2021-11-02
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多