如何在json mongodb中添加带键和值的列?

时间:2017-03-23 06:38:01

标签: json mongodb

我想更新地址内部json中的新键和值。我试过但我无法更新现有对象中的新键和值。

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"
    }
}

1 个答案:

答案 0 :(得分: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();
        }
    });
  }
});