MongoDB多维数组的更新操作

          最近项目中遇到了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:由于索引位置需要通过计算,因此该方式效率并不是很高,只是提供一种可以解决问题的方案而已。



        

         

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LJS109/article/details/46818843
文章标签: mongodb array
个人分类: mongodb
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭