You are viewing a single comment's thread from:

RE: PyMongo开发指南

in #starnote • 5 days ago

可以使用PyMongo的aggregate()方法进行聚合查询。聚合管道可以对数据进行过滤,排序,计数等操作。

import pymongo

client = pymongo.MongoClient()
db = client['testdb']
col = db['data']

pipeline = [
    {'$match': {'status': 'A'}}, 
    {'$group': {'_id':'$user', 'total':{'$sum': '$points'}}}
]

results = col.aggregate(pipeline)

for result in results:
    print(result)
这里首先是用$match阶段过滤status为'A'的文档,然后用$group阶段按user字段分组,计算每个user的points总和。

aggregate()方法接受一个聚合管道列表,每个阶段是一个字典。常用的聚合阶段有:

$match: 过滤文档
$group: 分组,可以用来做聚合计算如求和、平均值等
$sort: 排序
$limit:限制结果数量
$project:重新塑造输出文档,如重命名、增加或删除字段
$lookup:连接集合,实现类似关系数据库的join
聚合框架很强大,可以实现复杂的数据分析和处理。需要根据具体需求构建聚合管道