mongo用aggregate实现group by,时间格式转换

本文深入解析MongoDB聚合框架的$project、$match及$group等核心操作符的使用技巧,通过实例演示如何处理时间戳,实现报表查询中按天、周、月维度的数据统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

aggregate基本用法参考:http://www.runoob.com/mongodb/mongodb-aggregate.html

用的最多的是:

$project:改变文档字段显示格式,例如将时间戳,转换为xxxx-xx-xx的时间字符串形式。

$match:条件过滤,相当于关系型数据库的having, 或where

$group:相当于关系型数据库的group by

 

例子:报表查询,要以天,周,月三个维度去统计数据,而数据库里只有一个时间戳字段,collection格式如下:这里的timestamp时间戳字段是以s为单位

先转换timestamp格式为字符串格式:

现在需要按天,统计出每天shardingFlag是1或者2的交易的个数,$match中要放shardingFlag作为条件,group要放dateDay,shardingFlag:

 

其他以周,月作为统计维度,只不过是变换下@dateToString里面的format格式,mongo支持的格式可以参考:

https://blog.youkuaiyun.com/pengyiming/article/details/82775827

要注意的是他的例子中,timestamp单位是ms,我上面的例子中单位是s,所以做了一个$multiply

另外mongo官方操作文档:https://docs.mongodb.com/manual/introduction/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值