可以使用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
聚合框架很强大,可以实现复杂的数据分析和处理。需要根据具体需求构建聚合管道