2016-05-30 17 views
3

私はnodejsにmongodbドライバを使用しています。MongoError:セレクタは有効なJavaScriptオブジェクトである必要があります

レコードの更新中に以下のエラーが発生します。

{ "名": "MongoError"、 "メッセージ": "ドライバー" "セレクタは有効なJavaScript オブジェクトでなければならない":真}

ここでは私のスクリプトです:

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"}}) 
+1

'update()'メソッドの引数リストから 'collName'を削除します。つまり、操作は' db.collection(collName).update(SelectParas、{$ set:UpdateValues}、function(err、numUpdated){。 ..}); ' – chridam

答えて

2

あなたは、更新の検索クエリとしてコレクション名、つまり文字列を渡しています。そこにコレゴン名を渡す必要はありません。

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)を使用する必要があります。

関連する問題