pymongo 的使用

这篇博客详细介绍了如何使用pymongo进行MongoDB的连接、分组、排序、查找和更新操作。通过实例展示了如何进行分组统计、排序规则设定、不同类型的查询条件,包括等值查询、与或条件、非等值查询以及范围查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

连接

建立连接

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":"大辣皮"}})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值