标签:代码量 内嵌 过滤 避免 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)
标签:代码量 内嵌 过滤 避免 name 需要 imp 组元 ODB
原文地址:https://www.cnblogs.com/konglingxi/p/9523101.html