pymongo之聚合

虽然elasticsearch的聚合功能很好很强大,但是对于一般的小项目,mongodb的聚合功能也是堪用的。

mongodb的聚合类似于管道操作,通过多个构件来组成一个管道:filter, project, group, sort, limit, skip。

sort, limit, skip在普通查询中也是经常使用的命令,这里主要介绍前面三个构建的使用。

比如要查找field1或field2正则匹配某个字符串,然后对field3, field3进行分组并统计出现的次数,可以按如下来搞:

import pymongo

db_cli = pymongo.MongoClient(host=mongo_host, port=mongo_port) 
coll = db_cli["my_test"]["test_coll"]

aggs = [
    {"$match": {"$or" : [{"field1": {"$regex": "regex_str"}}, {"field2": {"$regex": "regex_str"}}]}},
    {"$project": {"field3":1, "field4":1}},
    {"$group": {"_id": {"field3": "$field3", "field4":"$field4"}, "count": {"$sum": 1}}},
]

result = coll.aggregate(pipeline=aggs)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容