您的位置:首页 > 数据库 > Mongodb

MongoDB多维数组的更新操作

2015-07-09 16:39 766 查看
          最近项目中遇到了MongoDB集合中多维数组的更新操作,由于MongoDB中数组定位符$仅支持一维数组,对于多维数组不支持,通过查阅资料并测试研究,得出了一种解决方式,具体操作如下所示:

 假设存在如下集合:

{

  "_id" : ObjectId("559e3683ff6788885b85ed86"),

  "name" : "China",

  "province" : [{

      "name" : "SC",

      "city" : [{

          "name" : "CD"

        }, {

          "name" : "MY"

        }]

    }, {

      "name" : "SD",

      "city" : [{

          "name" : "JN"

        }, {

          "name" : "TA"

        }]

    }]

}

如果我们想要为SC省中的CD市增加一个别名,即进行更新操作,由于$定位符在多维数组中不支持,因此我采取的方式是先得到欲更新省市的下标,然后利用下标的方式进行的更新,代码如下(使用的pymongo):

mongodb = MongoClient('127.0.0.1')

collection = mongodb.test.country

result = list(collection.find({"name":"China"}))[0]

province = result.get('province')

for i in range(len(province)):

    if province[i].get('name') == "SC":

        city = province[i].get('city')

        for j in range(len(city)):

            if city[j].get('name') == 'CD':

                collection.update_one({"name":"China"},{"$set":{"province.%s.city.%s.alias"%(i,j):"cd"}})

ps:由于索引位置需要通过计算,因此该方式效率并不是很高,只是提供一种可以解决问题的方案而已。

        

         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb array