mongodb修改器

Posted 詹姆溪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb修改器相关的知识,希望对你有一定的参考价值。

例子:[{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修改器的主要内容,如果未能解决你的问题,请参考以下文章

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

mongodb关联查询

无法在 MongoDB(猫鼬)文档中追加数组

修改MySQL密码报错“ERROR 1819 (HY000): Your password does not satisfy the current policy requirements“(代码片段

mongodb 数据修改

vscode中设置vue代码片段