因为业务需求,原本的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"}]
}