mongodb 高级部分 group by case when select distinct substr(sdf,0,6)
来源:互联网 发布:小说封面设计软件 编辑:程序博客网 时间:2024/06/16 10:38
mongodb高级部分:
一、gourp by 和case when 的混用
1、且看一张表格,表格的结构是(其中一条数据)
{ "_id" : ObjectId("57876215b522253ff42e3346"), "type" : NumberInt(0), "userId" : NumberInt(101920), "pointsNum" : NumberInt(50), "createdDate" : NumberLong(1468490260993), "lastModifiedDate" : NumberLong(1468494579572),}
2、现在需要根据userId分组统计pointsNum,并根据type值的不同汇总成两个字段,于是就需要实现类似于sql的写法
这是一条没有校验的sql写法,各位看官能看懂就好:
select outPointsTotalNum as sum(case when type=0 then pointsNum else 0),consumePointsTotalNum as sum(case when type=1 then pointsNum else 0)from table_aaagroup by userId;
3、在mongodb 中实现类似的需求,需要使用 $cond,$group
$cond[aaa,bbb,ccc] 类似于case when,和三元操作符 aaa?bbb:ccc
本文中还用到了aggregate,最终语句如下
db.d_points_detail.aggregate( [ { "$group" : { "_id" : "$userId" , "outPointsTotalNum" : { "$sum" : { "$cond" : [ { "$eq" : [ "$type" , 0]} , "$pointsNum" , 0]}},"consumePointsTotalNum" : { "$sum" : { "$cond" : [ { "$eq" : [ "$type" , 1]} , "$pointsNum" , 0]}}}},{ "$sort" : { "outPointsTotalNum" : -1}} ]);
二、distict 实现类似于select distinct substr(name,0,6) from student
1、这是Oracle的写法
select distinct (long 转换为日期) from detail;
2、mongodb中实现
db.d_points_detail1.aggregate( { "$group" : { "_id" : { '$dateToString': { 'format': '%Y-%m-%d', 'date': { '$add': [new Date(0), '$createdDate'] } } }}}, { $group: { _id: 1, total: { $sum: 1 } } });
转载注明出处,谢谢~
0 0
- mongodb 高级部分 group by case when select distinct substr(sdf,0,6)
- oracle case.when group by
- 一个sql的四种写法:sum...case.when、sum if、select(select..)、group by
- MongoDB count distinct group by JavaAPI查询
- mongodb group by 多字段/distinct等
- 关于case when结合group by用时的写法举例
- MySQL 使用group by和case when 的两个例子
- Mongodb数据统计分析:group by、count(distinct userId)
- mongodb count,distinct,group
- SQL DISTINCT、GROUP BY
- DISTINCT和GROUP BY
- group by,distinct,sum
- group by 替代distinct
- distinct和group by
- distinct和group by
- c# datatable.select() group by 和 DataTable中进行Distinct、Group by、Join、Create
- SQL:select case when
- SQL:Select Case When
- Linux系统中如何修改提示符
- 互斥锁 临界区 信号量 事件的区别
- cross compile tcpdump for Android devices script
- 图解Linux命令之--ls命令
- excel删除制指字符所在的行
- mongodb 高级部分 group by case when select distinct substr(sdf,0,6)
- Windows下Nginx的启动、停止等命令
- 解决DEDE防止图片撑破页面,文章内容中的图片自适应宽度
- 计算几何模板四(多边形)
- jsp小知识
- 506. Relative Ranks
- android 获取SHA1值,查看SHA1值,查看MD5值
- IIS做反向代理,详细步骤和解析!
- 数据结构和算法