mongo更新与删除集合中的字段python

来源:互联网 发布:php无限极分类实现 编辑:程序博客网 时间:2024/06/07 17:46

     因为业务需求,原本的mysql关系型数据库不能再继续沿用,所以公司选择了mongo作为存储。

     mongo的CRUD(增删改查)还是很简单的,因为mongo本身用的是dict类型,即key-value。但是在做项目中还是有问题把我困住了,所以我想要把这些问题写出来,以防以后犯错。

     我在mongo有这样一张表:

{      "name":"renyuan",      "1":[{"id":1,"title":"test1"},{"id":2,"title":"test2"}],      "2":[{"id":3,"title":"test3"},{"id":4,"title":"test4"}]
}

   更新操作

   我现在有这一需求:把"id":1中的"title"改为"test5",但是我在明面上是不知道前面"1"这个key的,必须通过一次mysql查询才知道。

   所以对于更新,我们有以下代码 

已知id和需要修改的title的值                key=getKeyById(id)                      #得到"id"为1的key值,这里为"1"        client = MongoClient('localhost', 27017)#比较常用        test=client.test                  #test为mongo的db        source=test.source                      #source为mongo test数据库的数据表        source.update_one({key+".id".encode("utf-8"):id},{"$set":{key+".title".encode("utf-8"):title}})
   这样就可以更新

 "1":[{"id":1,"title":"test1"},{"id":2,"title":"test2"}]  

 "1":[{"id":1,"title":"test5"},{"id":2,"title":"test2"}]  




   删除操作

   我们现在要删除"id"为1的数据,有以下代码:

source.update_one({"name":"renyuan"},{"$pull":{key:{"id":id}}})
这样就可以删除"id"为1的数据,即source表变为

<span style="font-size:14px;">{      "name":"renyuan",      "1":[{"id":2,"title":"test2"}],      "2":[{"id":3,"title":"test3"},{"id":4,"title":"test4"}]
}




0 0
原创粉丝点击