MongoDB统计查询

$group基本操作:

  • _id:分组字段的集合
  • $sum:使用$+字段名为求和(字符串忽略);
    • 1为每组的条数;
    • 可以在$sum中多个字段进行运算,得出成为新字段的结果
  • $addToSet:将分组内的某个字段加入一个集合中,无重复值,$push会重复
  • $unwind:用于拆分数组,当addToSet后是一个集合,为了更直观显示可用此拆分
db.table_a.aggregate([{$group:{_id:{player_id:"$player_id", channel:"$channel"},count : {"$sum": 1},amount : {"$sum": "$amount"},success: {"$sum": "$success"},fail : {"$sum": "$fail"},player_id: {"$addToSet": "$player_id"},channel : {"$addToSet": "$channel"}},{$unwind:"$player_id"},{$unwind:"$channel"}
])

Mgo操作

在golang中求和之后想在每一列中增加某些字段的值,所以要用上$push,$addToSet。但是用上这两个关键字后所得到的数据是个是个切片。为了更简单的与proto结构关联起来,所以要加上$unwind来拆分。注:我此时所要的附加字段是分组的字段,因此不会有重复求和的结果。

//go
findBson := bson.M{}
groupBson := bson.M{"_id": bson.M{"player_id": "$player_id", "channel": "$channel"},"count":      bson.M{"$sum": 1},"amount":     bson.M{"$sum": "$amount"},"success":    bson.M{"$sum": "$success"},"fail":       bson.M{"$sum": "$fail"},"player_id":  bson.M{"$addToSet": "$player_id"},"channel":    bson.M{"$addToSet": "$channel"},
}
//查询聚合数据条件
m := []bson.M{{"$match": findBson},{"$group": groupBson},{"$unwind": "$PlayerId"},{"$unwind": "$Channel"},
}var data []*XXX // proto结构体
query = col.Pipe(m)
query.All(&data)
//proto//用户注单统计数据
message XXX{optional int64 player_id= 1;optional string channel = 2;optional int64 amount =3;optional int64 success= 4;optional int64 fail=5;
}

Mgo统计查询及显示附加字段相关推荐

  1. 以“学生”、“成绩”表为数据源,使用 SQL 视图创建一个名为“学生不及格课程数”统计查询,显示字段为:学号、姓名、不及格门数。

    以"学生"."成绩"表为数据源,使用 SQL 视图创建一个名为"学生不 及格课程数"统计查询,显示字段为:学号.姓名.不及格门数.

  2. 添加页面不显示ks001这条字段,修改显示,查询都显示该字段

    重点对比1 import groovy.sql.Sql def sql=null if(mypara.czzt0){ mypara.damapvalue.cCode=mypara.hqdacode() ...

  3. mybatis 显示自定义多个统计_myBatis查询结果显示多表内的字段——通过resultMap映射自定义结果...

    问:查询完成后,结果列只能展示单表内的字段,比如用户表表中只记录角色编号,没有角色名称.结果列要如何展示在另一个表内的字段--角色名称呢? 答:通过resultMap映射自定义结果显示该字段. 1.r ...

  4. oracle查询数据令某字段显示固定值

    oracle查询数据令某字段显示固定值 select t.tname 表名称, '固定值' as C from tab t; 注意: C字段 必须是tab表中没有的字段 mysql查询数据令某字段显示 ...

  5. oracle+统计表的字段,统计系统中表的个数与查询所有表的字段信息-Oracle

    统计系统中表的个数与查询所有表的字段信息 –统计系统中表的个数: –表描述字段: –需要字段:Name.Code.Commente select lower(a.TABLE_NAME) || '-' ...

  6. sql语句查询数据库返回结果转换显示自定义字段

    在开发中经常遇到在数据中用单字符保存数据对应简单信息,比如性别.状态.与否等.如果要求在绑定数据源并显示对应字段,比如性别:1表示男,0表示女:状态:1表示有效,0表示失效等等.简单一句sql语句搞定 ...

  7. mysql求和 子查询_MYSQL 查询方法 统计查询 链接查询 子查询

    mysql表格查询方法: 查询: 1.简单查询 select * from Info --查所有数据 select Code,Name from Info --查指定列的数据 select Code ...

  8. SQL service基础(二)对数据指定列查询、条件查询、查询结果排序、聚集函数查询、分组统计查询

    实验目标: 1.掌握指定列或全部列查询 2.掌握按条件查询 3.掌握对查询结果排序 4.掌握使用聚集函数的查询 5.掌握分组统计查询 一.请完成书中实验7.1,并完成以下问题. 1.查询所有学生的姓名 ...

  9. apex 查询_在 Apex 中使用合并统计查询

    SOQL 中的合并统计查询 在 SOQL 中,我们可以使用一系列函数来进行合并统计查询.它们的功能和标准 SQL 中的 SUM(),COUNT() 等函数类似. Apex 中使用合并统计查询 在 Ap ...

最新文章

  1. AI专家警告:GPT-3令人赞叹,但缺乏透明度
  2. 费曼:所有的科学知识都是不确定的
  3. Spring 是如何解决并发访问的线程安全性问题的
  4. html让下拉条消失,CSS 实现隐藏滚动条同时又可以滚动
  5. IOS上的 Audio Memos SE 如何分享和传输录音到电脑?
  6. spring 面试题
  7. 水晶报表各版本打包模块及相关文档
  8. 5.SpringMVC
  9. 使用Def文件导出dll
  10. CCNA笔记之第十四节:RIP协议(1)
  11. python利器-[python] bluepy 一款python封装的BLE利器
  12. [转载] python+opencv4读取图像
  13. 产品运营必备的素质有哪些
  14. Loadrunner11 下载、安装与破解
  15. 百度前端技术学院---vue动态数据绑定-3
  16. VUE调用高德地图之热力图
  17. 计算机求职信英语作文模板,英语自荐信范文(计算机)
  18. idea安装findBugs 报idea运行项目报错Cannot run program
  19. Apache Kylin Buid Cube详细流程
  20. 我去,神操作!虚拟机Ubuntu18.04居然可以安装NVIDIA + 附带安装源码与命令

热门文章

  1. [枚举]ACPC:Problem B. The Lion King
  2. 二进制、八进制、十六进制的转换
  3. arcgis栅格计算器:将栅格图层指定值设置为Nodata及栅格图层求交
  4. Aandroid最火的十大开源项目
  5. Python使用Eel和HTML开发桌面应用
  6. Shodan Hacking
  7. Google hacking(谷歌语法)
  8. 中国有嘻哈:网易云、虾米音乐歌词爬虫项目分享
  9. C#:实现Zhang Suen细化算法(附完整源码)
  10. 非编码区单核苷酸变异