业务需求及设计见前文:基于 MongoDB 动态字段设计的探索

根据专业计算各科平均分 (总分、最高分、最低分)

public Object avg(String major){Aggregation aggregation = Aggregation.newAggregation(Aggregation.unwind("courseList"),Aggregation.match(Criteria.where("major").is(major)),Aggregation.group("courseList.name").avg("courseList.score").as("avg")); // avg 可以替换成 sum, max, min 分别求各科总分、最高分、最低分AggregationResults<BasicDBObject> aggregationResults = mongoTemplate.aggregate(aggregation, Student.class, BasicDBObject.class);List<BasicDBObject> result = new ArrayList<>();for(Iterator<BasicDBObject> iterator = aggregationResults.iterator(); iterator.hasNext();){result.add(iterator.next());}return result;
}

计算个人总分数

public Object sum(String name){Aggregation aggregation = Aggregation.newAggregation(Aggregation.unwind("courseList"),Aggregation.match(Criteria.where("name").is(name)),Aggregation.group("name").sum("courseList.score").as("sum"));AggregationResults<BasicDBObject> aggregationResults = mongoTemplate.aggregate(aggregation, Student.class, BasicDBObject.class);List<BasicDBObject> result = new ArrayList<>();for(Iterator<BasicDBObject> iterator = aggregationResults.iterator(); iterator.hasNext();){result.add(iterator.next());}return result;
}

完整代码:GitHub

参考:MongoTemplate 聚合操作

转载于:https://www.cnblogs.com/victorbu/p/11293743.html

基于 MongoDB 动态字段设计的探索 (二) 聚合操作相关推荐

  1. 如何设计动态(不定)字段的产品数据库表?--淘宝多产品属性字段设计方法

    看到szsm博客,觉得他分析的很不错,这里把他的资料整理一下 --------------------------------------------------------------------- ...

  2. 用MongoDB数据库来管理办公系统中文档型的表单和信息——通用流程化应用审批单设计思路(二,续)

    1.办公系统中文档的定义 办公系统中的文档就是指对数据不敏感的业务,例如流程中的审批单.信息专栏.数据上报.信息记录等.而对于这些信息的管理,特别是时效性较强的管理记录,仍采用关系型数据库进行管理. ...

  3. java毕业设计——基于java+MMAS的蚁群算法路由选择可视化动态模拟设计与实现(毕业论文+程序源码)——蚁群算法路由选择可视化动态模拟

    基于java+MMAS的蚁群算法路由选择可视化动态模拟设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+MMAS的蚁群算法路由选择可视化动态模拟设计与实现,文章末尾附有本毕业设计的 ...

  4. (原创)基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示

    在(原创基于ZedBoard的Webcam设计(一):Zedboard上的USB摄像头(V4L2接口)的图片采集中,我们完成了ZedBoard上USB摄像头的单幅图片采集,采集到的图片是存储在文件系统 ...

  5. key+value实现动态字段的存储设计

    一般我们在存储例如用户信息的时候,用户信息的各属性是固定的,这时我们可以通过如下方式设计表: user(user_id, name, age, sex) 但是,如果某天呢,产品说用户信息需要加几个属性 ...

  6. Thinking in AJAX(二) —— 基于AJAX的WEB设计

    Thinking in AJAX(二) -- 基于AJAX的WEB设计 一.AJAX最值得称赞的是异步交互,而不是无刷新 很多人都看好AJAX无刷新的技术,以至于认同AJAX就是用来做无刷新的.这个认 ...

  7. mongodb创建图书管理_基于MongoDB的云数据库管理系统的设计与实现

    III 目 录 摘 要 ........................................................................................ ...

  8. 数据库字段动态扩展设计

    2016-11-18       0 个评论    来源: Hello.KK (专注数据库)   收藏     我要投稿 最近讨论数据库有关产品方案的项目自动扩展问题,即每个方案都有多个项目,而每个方 ...

  9. 基于ZigBee和STM32的智能家居控制系统的设计与实现(二)

    基于ZigBee和STM32的智能家居控制系统的设计与实现(二)   上一篇博客中总体介绍智能家居系统的基本实现原理,这篇博客和以后的几篇博客会详细进行相应的介绍.这里首先进行硬件电路的设计. 硬件电 ...

最新文章

  1. 调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配
  2. C++中char类型的溢出问题
  3. 给Xshell设置舒适的配色方案
  4. idea 快捷键在方法上抛出异常
  5. android摄像头框架,FS_S5PC100平台上Android Camera架构分析
  6. android 拍照换头像,Android调用相机拍照,裁剪及更换头像功能的实现
  7. 什么叫冷备用状态_新密5P加工中心冷油机生产厂家电话【瀚信德】
  8. mysql 设置域名_mysql 设置域名
  9. AndroidStudio_HttpServer类接收到数据以后_通过广播给对应Activity发送接收到是远程服务器的数据---Android原生开发工作笔记226
  10. python 三目运算符
  11. 企业如何确定需要什么样的产品经理
  12. Codeforces Manthan, Codefest 18 (rated, Div. 1 + Div. 2) E.Trips
  13. ListView乱谈之ListView的布局
  14. machine learning之PCA、ICA
  15. BootStrap格栅系统
  16. android_get_control_socket 获取 UNIX 域套接字 FD
  17. 安卓使用富文本编辑器html5,Android富文本编辑器,图文详细
  18. 怎么用软件设计班旗_设计制作:班旗设计
  19. 用Excel地图可视化——2017世界各国和地区GDP排名(初步统计版)
  20. nginx 按天分割日志

热门文章

  1. java html 区别是什么意思_Java html 区别是什么
  2. 不能返回函数内部new分配的内存的引用_JNI开发之局部引用、全局引用和弱全局引用(三)...
  3. scatterpie | ggplot2的几何图形拓展包(1):如何在地图中添加饼图
  4. java递归统计_Java类递归计数
  5. Ubuntu 系统进不去 左上角减号
  6. influx没有web_influxdb 安装及简单使用
  7. cmd查看所有数据库 db2_db2 cmd命令操作
  8. oracle删除临时表空间语句,Oracle中临时表空间的清理
  9. 单片机ADC采样算法----中位值平均滤波法
  10. 怎样分析 JAVA 的 Thread Dumps