【问题标题】:MongoError : selector must be a valid JavaScript objectMongoError : 选择器必须是有效的 JavaScript 对象
【发布时间】:2016-05-30 19:14:38
【问题描述】:

我正在为 nodejs 使用 mongodb 驱动程序。

我在更新记录时遇到错误。

{"name":"MongoError","message":"选择器必须是有效的 JavaScript 对象","驱动程序":true}

这是我的脚本:

MongoClient.connect(url, function (err, db) {
      if (err) 
      {
        console.log('Unable to connect to the mongoDB server. Error:', err);
        return;
      }
    var collName = "bank";
    var SelectParas = {"name":"ABC"};
    var UpdateValues = {"name":"PQR"};

    db.collection(collName).update(collName,SelectParas,{$set:UpdateValues},function (err,numUpdated){
            if(err)
            {
            console.log('err');
            console.log(err);
            return; 
            }
            if(numUpdated) 
            {
             console.log('Updated Successfully %d document(s).', numUpdated);
            }
                db.close();

            });
});

我可以在 mongo 控制台中编写以下行并且它可以工作。

db.bank.update({"name":"ABC"},{$set:{"name":"PQR"}})

【问题讨论】:

  • update()方法参数列表中删除collName,即你的操作应该是db.collection(collName).update(SelectParas,{$set:UpdateValues},function (err,numUpdated){ ... });

标签: node.js mongodb


【解决方案1】:

您正在传递集合名称,即字符串作为更新的查找查询。不需要在那里传递集合名称。

db.collection(collName).update(collName,SelectParas,{$set:UpdateValues},function (err,numUpdated) 
// collName need not pass in the update function.

需要使用

改为db.collection(collName).update(SelectParas,{$set:UpdateValues},function (err,numUpdated)

【讨论】:

    猜你喜欢
    • 2017-10-20
    • 2018-11-24
    • 2018-07-10
    • 2018-05-30
    • 2017-02-10
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多