2017-03-23 28 views
0

我想更新地址內部json中的新密鑰和值。我嘗試過但我無法更新現有對象中的新鍵和值。如何在json mongodb中添加具有鍵和值的列?

var mongodb=require("mongodb"); 
var mongoclient=mongodb.MongoClient; 
var url="mongodb://localhost:27017/details"; 
mongoclient.connect(url,function(err,db) 
{ 
    if(err) 
    { 
     console.log("unable to connect database"); 
    } 
    else 
    { 
     console.log("details database connected successfully"); 
     var collection=db.collection("users"); 
     collection.update({"name":"naranyamoorthy"}, {$addtoset: {"address[country]":"USA"}},function(err,result) 
     { 
      if(err) 
      { 
       console.log("not updated"); 
      } 
      else 
      { 
       console.log("updated succesfully"); 
       console.log(); 
       db.close(); 
      } 
     }); 
    } 
}); 

的JSONFILE包含:

{ 
    "_id" : ObjectId("58956389362992d7976510d4"), 
    "name" : "naranyamoorthy", 
    "age" : 21, 
    "subject" : [ 
     "Bootstrap", 
     "node.js", 
     "j2ee", 
     "javascript" 
    ], 
    "address" : { 
     "city" : "Afganistan", 
     "state" : "tamilnadu", 
     "pincode" : "12352" 
    } 
} 

我需要:

{ 
    "_id" : ObjectId("58956389362992d7976510d4"), 
    "name" : "naranyamoorthy", 
    "age" : 21, 
    "subject" : [ 
     "Bootstrap", 
     "node.js", 
     "j2ee", 
     "javascript" 
    ], 
    "address" : { 
     "city" : "chennai", 
     "state" : "tamilnadu", 
     "pincode" : "12352", 
     "country":"India" 
    } 
} 
+0

我推薦兩種方法:首先,在mongo shell中構建正確的查詢,然後構建您的代碼以執行相同的查詢。這將幫助您正確地查詢您的查詢。其次,通過調試器運行你的代碼;這將有助於解決代碼中的問題,例如未設置變量。 –

回答

0

您的查詢是不正確的,如果你想設置的國家這是內部地址,然後使用address.country代替address[country]。這裏是更正的查詢:

var mongodb=require("mongodb"); 
var mongoclient=mongodb.MongoClient; 
var url="mongodb://localhost:27017/details"; 
mongoclient.connect(url,function(err,db) 
{ 
    if(err) 
    { 
    console.log("unable to connect database"); 
    } 
    else 
    { 
    console.log("details database connected successfully"); 
    var collection=db.collection("users"); 
    collection.update({"name":"naranyamoorthy"}, {$set:{"address.country":"USA"}},function(err,result) 
    { 
     if(err) 
     { 
      console.log("not updated"); 
     } 
     else 
     { 
      console.log("updated succesfully"); 
      console.log(); 
      db.close(); 
     } 
    }); 
    } 
}); 
+0

這不起作用。它顯示$ addtoset爲未知標識符 – vigneshRavi

+0

對不起,它必須是$ addToSet而不是$ addtoset,更新了代碼。 – Magiczvn

+0

它正在工作,但它無法完美更新。它在地址json中更新了「國家」:[「USA」]。它印刷了包括角支架。我不需要角支架。 – vigneshRavi

相關問題