码迷,mamicode.com
首页 > 数据库 > 详细

mongodb修改器

时间:2018-08-23 14:13:30      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:代码量   内嵌   过滤   避免   name   需要   imp   组元   ODB   

例子:[{u‘size‘: {u‘h‘: 28.0, u‘uom‘: u‘cm‘, u‘w‘: 35.5}, u‘item‘: u‘canvas‘, u‘_id‘: ObjectId(‘5b6be4a2b5f86831dbf27f43‘), u‘tags‘: [u‘cotton‘], u‘qty‘: 100.0}]

# 连接mongog服务
import pymongo
client = pymongo.MongoClient("mongodb://10.255.0.250:27017/")
# select database
db = client.test
# 选择集合
table = db.inventory

## 修改器
# $inc 修改器$inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作
table.update({"item":"canvas"},{"$inc":{"qty":2}})
table.update({"item":"canvas"},{"$inc":{"qty":-3}})

# $set 用来指定一个键并更新键值,若键不存在并创建
table.update({"item":"canvas"},{"$set":{"qty":5}})
# 对于内嵌文档在使用$set更新时,使用"."连接的方式。
table.update({"item":"canvas"},{"$set":{"size.h":29}})

# 使用修改器$unset时,不论对目标键使用1、0、-1或者具体的字符串等都是可以删除该目标键
table.update({"item":"canvas"},{"$set":{"name":"klc"}})
table.update({"item":"canvas"},{"$unset":{"name":0}})

# $push--向文档的某个数组类型的键添加一个数组元素,不过滤重复的数据。添加时键存在,要求键值类型必须是数组;键不存在,则创建数组类型的键
table.update({"item":"canvas"},{"$push":{"list":0}})
table.update({"item":"canvas"},{"$unset":{"list":1}})

# $pop从数组的头或者尾删除数组中的元素,1==头部,-1==尾部
table.update({"item":"canvas"},{"$pop":{"list":-1}})
table.update({"item":"canvas"},{"$pop":{"list":1}})

# $pull从数组中删除满足条件的元素
table.update({"item":"canvas"},{"$push":{"list":"klc"}})
table.update({"item":"canvas"},{"$pull":{"list":"klc"}})

# 在需要对数组中的值进行操作的时候,数组是0开始的,可以直接将下标作为键来选择元素,若为多个文档满足条件,则只更新第一个文档
table.update({"item":"canvas"},{"$push":{"list":{‘name‘:"hrr2"}}})
table.update({"item":"canvas"},{"$push":{"list":{‘name‘:"hrr3"}}})
table.update({"item":"canvas"},{"$set":{"list.0.name":"hrr0"}})
table.update({"item":"canvas"},{"$set":{"list.1.name":"hrr1"}})

# upsert是一种特殊的更新。当没有符合条件的文档,就以这个条件和更新文档为基础创建一个新的文档,如果找到匹配的文档就正常的更新。
使用upsert,既可以避免竞态问题,也可以减少代码量(update的第三个参数就表示这个upsert,参数为true时)
table.update({"item":"canvas1"},{"$set":{"list.1.name":"hrr1"}},True)

 

mongodb修改器

标签:代码量   内嵌   过滤   避免   name   需要   imp   组元   ODB   

原文地址:https://www.cnblogs.com/konglingxi/p/9523101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!