zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    SPAN和DIV的区别
    利用XMLHTTP无刷新添加数据之Post篇
    在Asp.net中上传大文件的解决方法
    在事务中执行批量复制操作
    Microsoft Visual SourceSafe 使用指南
    恢复只有MDF文件的MS SQL数据库
    配置sql server 2000以允许远程访问
    转: Bill Gates 哈佛大学毕业典礼演讲1
    用于对数据库进行操作的类库经验的总结
    用于对数据库进行操作的类库经验的总结 (二)
  • 原文地址:https://www.cnblogs.com/konglingxi/p/9523101.html
Copyright © 2011-2022 走看看