pymongo 还不会?, 闹呢, 进来看操作!

在pymongo遇到的困难在这里记一下(这个版本是3.8)

连接

建立连接

import pymongo
conn = pymongo.MongoClient('localhost', 27017)

collection = conn['db']['article']    # 或
collection = conn.db.article
表名=连接名['库名']['集合名']

分组

1.group()函数

func = '''
function(obj,prev)
    prev.count +=obj.count
'''    
ret = collection.group(key=['date'], condition=None, initial={'count': 0}, reduce=func)
print(ret)

按日期给文章分组,并统计浏览量总数count(字典的值是初始值0)
运行结果

   [{'date': '2019年08月13日', 'count': 2793.0}, {'date': '2019年06月15日', 'count': 1332.0}, {'date': '2019年07月28日', 'count': 1374.0},...]

2.聚合函数

ret_1 = table.aggregate([{'$group': {"_id": "$date", "count": {"$sum": "$count"}}}])
print(list(ret_1))


结果:

[{'_id': '2019年08月7日', 'count': 93}, {'_id': '2019年08月6日', 'count': 105}, {'_id': '2019年07月7日', 'count': 117},...]

几个常用的参数

key:分组依据的字段----------------------------参数类型 : list

condition:是附加条件---------------------------参数类型 : dict
initial:是想要统计的每组的信息--------------参数类型 : dict
reduce:函数,书写统计逻辑--------------------参数类型 : str
…
JS代码,该函数的参数 object 是集合中的一条记录,prev是参数initial

排序

升序:pymongo.ASCENDING ( 1 )
降序:pymongo.DESCENDING ( -1 )

ret = collection.find().sort([("date", pymongo.ASCENDING)])

或当做参数传进去

ret = collection.find(sort=[("date", pymongo.ASCENDING)])

查找

查询表中所有数据

db.goods.find()

等值查询

db.goods.find({“name”:“辣条”})

and 与 or

db.goods.find({“name”:“辣条”, “price”:0.5})
db.goods.find({"$or":[{“name”:“辣条”},{“price”:3.5}]})

非等值查询

:db.goods.find({“定位的键”:{$…:“值”})
greater than ,little than ,equal 大于,小于和相等

大于: $gt 和 大于等于: $gte

db.goods.find({"price":{"$gt":0.5}})
db.goods.find({"price":{"$gte":4.5}})

小于: $lt 和 小于等于: $lte

db.goods.find({"price":{"$lt":4.5}})
db.goods.find({"price":{"$lte":4.5}}) 

不等于: $ne

db.goods.find({"price":{"$ne":5.5}}) 

上下限范围查询

db.goods.find({"price":{"$lt":5.5, "$gt":0.5}}) 

非上下限范围查询

db.goods.find({$or:[{"price":{"$lt":3.5}}, {"price":{"$gt":4.5}}]})

更新

table.update({"name":"辣条"},{"$set":{"name":"大辣皮"}})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lonelypatients°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值