Mongodb--find find_one update $set $mul

今天就说一说在python+Mongodb类型的项目中--find常用查询的基本写法

Mongodb中的数据以文档的形式存储,多个文档构成一个集合,多个集合构成一个数据库

现在以一条订单表为例进行操作:

查询

 

 
import re

def test(order_id, b_id, state, start_time, stop_time, goods_info, a):

    # 创建集合 createCollection 创建文档 insert 删除文档remove 删除集合 drop

    # ################# find ######################
    # 查询所有记录
    order = MongoConn().db["order_info"].find()
    # 查询某条记录
    order = MongoConn().db["order_info"].find_one({"_id": order_id})
    # 查询某条记录并取某些字段(b_id、costMoney)
    order = MongoConn().db["order_info"].find_one({"_id": order_id},{"_id": 0, "b_id": 1, "costMoney": 1})
    # 根据b_id和_id进行模糊查询(import re引入正则表达式) (or条件)
    order = MongoConn().db["order_info"].find({"$or": [{"_id": re.compile(order_id)}, {"b_id": re.compile(b_id)}]})
    # and多个条件并列查询 (or是同样用法)  查询商户b_id的订单状态为state的订单
    order = MongoConn().db["order_info"].find({"$and": [{"_id": re.compile(order_id)},
                                                         {"b_id": b_id},
                                                         {"state": state}]})
    # 根据时间查询($gt:大于 $lt:小于 $gte:大于或等于 $lte:小于或等于) 查询介于start_time和stop_time之间的订单
    order = MongoConn().db["order_info"].find({"$and":
                                        [{"createTime": {"$gt": start_time}},
                                         {"createTime": {"$lt": stop_time}}]})

    # ############### update ####################3
    # 数组修改器--$push 向文档的某个数组类型的键添加一个数组元素,不过滤重复的数据。添加时键存在,要求键值类型必须是数组;键不存在,则创建数组类型的键 对订单中的goodsList数组字段内增加goods_info内容
    order = MongoConn().db["order_info"].update_one({"_id": order_id}, {"$push": {"goodsList": listinfo}})

    # 删除数组字段内的相应value的内容 [["a"],["dd"],["ee","ff"]]类型
    # 此方法未通过验证!! 

    
# order = MongoConn().db["order_info"].update_one({"_id": order_id}, {"$pull": {"array": a}}) 

# 修改器$inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作 正数增加负数减少(对订单表中的order_count字段增加/减少 value )

order = MongoConn().db["order_info"].update_one({"_id": order_id}, {"$inc": {"order_count": -5 }})

# 指定一个键并更新键值,若键不存在并创建

order = MongoConn().db["order_info"].update_one({"_id": order_id}, {"$set": {"hello": "world"}})

# 对于内嵌文档在使用$set更新时,使用"."连接的方式

order = MongoConn().db["order_info"].update_one({"_id": order_id}, {"$set": {"size.width": 8}})

# 订单表删除某条字段(使用修改器$unset时,不论对目标键使用10-1或者具体的字符串等都是可以删除该目标键)

order = MongoConn().db["order_info"].update_one({"_id": order_id}, {"$unset": {"hello": 1}})

order = MongoConn().db["order_info"].update_one({"_id": order_id}, {"$unset": {"hello": 0}})

 

 

———————————————————分割线———————————————————————————————

20200522

乘法:

需求:对test集合中的total字段中 大于等于752  小于773 的值  乘以 0.75

实现语句:

db.getCollection(test').update({"total": {"$lt": 773, "$gte": 752}}, {$mul:{"total":0.75}},false,true )

第一个大括号代表查询条件,第二个大括号是修改的值,

第三个参数是 upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

第四个参数是 multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值