使用 PyMongo 执行 MongoDB 聚合查询
- PyMongo 环境准备
首先需要安装 PyMongo,如果还没有安装的话,可以使用 pip 进行安装:
pip install pymongo
然后在 Python 脚本中导入 pymongo 模块:
import pymongo
在执行聚合查询前,需要先连接 MongoDB 数据库,以下是连接到本地 MongoDB 服务器的示例代码:
client = pymongo.MongoClient('mongodb://localhost:27017/') db = client['mydb']
其中 'mongodb://localhost:27017/' 是 MongoDB 服务器的地址,'mydb' 是要连接的数据库名称,可以根据实际情况进行修改。
- 聚合查询示例
下面以一个示例来演示 MongoDB 聚合查询的使用。假设我们有一个名为 'orders' 的集合,其中每条记录表示一个订单,包含如下字段:
- orderId:订单编号,字符串类型,并且是集合中的唯一标识。
- product:商品名称,字符串类型。
- price:商品价格,数值类型。
- quantity:商品数量,数值类型。
- date:订单日期,日期类型。
我们要执行的聚合查询是:统计每个商品的销售总数量和销售总金额,并按照销售总金额从高到低排序。
查询代码如下:
pipeline = [ {'$group': { '_id': '$product', 'total_qty': {'$sum': '$quantity'}, 'total_price': {'$sum': {'$multiply': ['$quantity', '$price']}} }}, {'$sort': {'total_price': -1}}, ] result = db.orders.aggregate(pipeline) for item in result: print(item)
上述代码中,聚合查询使用了 2 个阶段:
- $group 阶段:根据 'product' 字段进行分组,统计每个商品的销售总数量和销售总金额,并使用 '_id' 字段保存分组的键值。
- $sort 阶段:按照 'total_price' 字段进行降序排序。
最后的结果会以迭代器的方式返回,我们可以通过遍历迭代器来获取每个商品的销售统计结果,例如:
{'_id': '皮蛋编程', 'total_qty': 20, 'total_price': 2000} {'_id': 'pidancode.com', 'total_qty': 10, 'total_price': 1000}
相关文章