将属性添加到MongoDB中的现有文档

时间:2015-01-19 13:35:43

标签: mongodb

我有一个像这样的mongoDB集合:

{
    "_id" : ObjectId("54bd056621396c50b6da3d4
    "name" : "Nagaland",
    "districts" : [
            {
                    "name" : "Wokha",
                    "population" : {
                            "2011" : 161223
                    }
            },
            {
                    "name" : "Mokokchung",
                    "population" : {
                            "2011" : 232085
                    }
            },
            {
                    "name" : "Zunheboto",
                    "population" : {
                            "2011" : 153955
                    }
            }
    ]}

现在我想在每个地区添加更多属性,如位置,性别比等。我该怎么办?当我使用更新时,它会添加到不在特定区域内的父级。

1 个答案:

答案 0 :(得分:1)

如果在嵌套文档中插入静态字段,那么脚本可以正常工作

       db.collectionName.find({
   "districts":{"$exists":true}}).forEach(function(data){
    for(var i=0;i<data.districts.length;i++) {
      db.collectionName.update(
     { 
     "_id": data._id, 
     "districts.name": data.districts[i].name 
     },
     {
     "$set": {
       "districts.$.location": "A",
       "districts.$.sex": "M/F",

     }
     },true,true
      );
  }
})