Mongodb aggregate 概述

  • $match 即 sql 中的 where 条件,查询符合条件的记录。
  • $project 处理字段值,即从现在表中(collection)中字段选取你想要的字段,给他们起别名,当然可以包含一些处理,比如日期转换,计算等。
  • $group sql 中的 group by, 使用 project 中的 field(刚在 project 中被处理过的),作进一步处理,比如 sum
  • $sort 排序。也要用到 project 处理后的 field。

这几个部分可以单独 run, 可以试试,比如只写 project

1. $project 示例

吐槽:

a. 这个名字起的的, project - 这就让你很难望文生义,比如有个东西叫 zookeeper,这名字多好,动物园管理员,管大象的,管动物的,多带感。这里的 project 就莫名其妙。

b.当原字段名用$开头,dateToString, date 之类的操作也用 $ 开头,就比较蛋疼,很难分清哪个是操作,哪个是字段。

2. 完整的 group by count 示例

按月统计订单数

输出:

<class 'str'> 2022-10 1
<class 'str'> 2022-11 1
<class 'str'> 2022-12 1
<class 'str'> 2023-10 1
<class 'str'> 2023-11 1
<class 'str'> 2023-12 1

3. group by + 百分比

$addFields

输出示例:

{'_id': 'pa_96rmkslq', 'count': 7, 'percentage': 100.0}

我觉得我说的挺清楚的,结构搞清楚,细节查官方文档就好。

如果你也觉得说得清楚,请不吝点赞。

代码是 python, pymongo, 操作 mongodb。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值