基于 MongoDB 动态字段设计的探索 (二) 聚合操作
业务需求及设计见前文:基于 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 动态字段设计的探索 (二) 聚合操作相关推荐
- 如何设计动态(不定)字段的产品数据库表?--淘宝多产品属性字段设计方法
看到szsm博客,觉得他分析的很不错,这里把他的资料整理一下 --------------------------------------------------------------------- ...
- 用MongoDB数据库来管理办公系统中文档型的表单和信息——通用流程化应用审批单设计思路(二,续)
1.办公系统中文档的定义 办公系统中的文档就是指对数据不敏感的业务,例如流程中的审批单.信息专栏.数据上报.信息记录等.而对于这些信息的管理,特别是时效性较强的管理记录,仍采用关系型数据库进行管理. ...
- java毕业设计——基于java+MMAS的蚁群算法路由选择可视化动态模拟设计与实现(毕业论文+程序源码)——蚁群算法路由选择可视化动态模拟
基于java+MMAS的蚁群算法路由选择可视化动态模拟设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+MMAS的蚁群算法路由选择可视化动态模拟设计与实现,文章末尾附有本毕业设计的 ...
- (原创)基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示
在(原创基于ZedBoard的Webcam设计(一):Zedboard上的USB摄像头(V4L2接口)的图片采集中,我们完成了ZedBoard上USB摄像头的单幅图片采集,采集到的图片是存储在文件系统 ...
- key+value实现动态字段的存储设计
一般我们在存储例如用户信息的时候,用户信息的各属性是固定的,这时我们可以通过如下方式设计表: user(user_id, name, age, sex) 但是,如果某天呢,产品说用户信息需要加几个属性 ...
- Thinking in AJAX(二) —— 基于AJAX的WEB设计
Thinking in AJAX(二) -- 基于AJAX的WEB设计 一.AJAX最值得称赞的是异步交互,而不是无刷新 很多人都看好AJAX无刷新的技术,以至于认同AJAX就是用来做无刷新的.这个认 ...
- mongodb创建图书管理_基于MongoDB的云数据库管理系统的设计与实现
III 目 录 摘 要 ........................................................................................ ...
- 数据库字段动态扩展设计
2016-11-18 0 个评论 来源: Hello.KK (专注数据库) 收藏 我要投稿 最近讨论数据库有关产品方案的项目自动扩展问题,即每个方案都有多个项目,而每个方 ...
- 基于ZigBee和STM32的智能家居控制系统的设计与实现(二)
基于ZigBee和STM32的智能家居控制系统的设计与实现(二) 上一篇博客中总体介绍智能家居系统的基本实现原理,这篇博客和以后的几篇博客会详细进行相应的介绍.这里首先进行硬件电路的设计. 硬件电 ...
最新文章
- 调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配
- C++中char类型的溢出问题
- 给Xshell设置舒适的配色方案
- idea 快捷键在方法上抛出异常
- android摄像头框架,FS_S5PC100平台上Android Camera架构分析
- android 拍照换头像,Android调用相机拍照,裁剪及更换头像功能的实现
- 什么叫冷备用状态_新密5P加工中心冷油机生产厂家电话【瀚信德】
- mysql 设置域名_mysql 设置域名
- AndroidStudio_HttpServer类接收到数据以后_通过广播给对应Activity发送接收到是远程服务器的数据---Android原生开发工作笔记226
- python 三目运算符
- 企业如何确定需要什么样的产品经理
- Codeforces Manthan, Codefest 18 (rated, Div. 1 + Div. 2) E.Trips
- ListView乱谈之ListView的布局
- machine learning之PCA、ICA
- BootStrap格栅系统
- android_get_control_socket 获取 UNIX 域套接字 FD
- 安卓使用富文本编辑器html5,Android富文本编辑器,图文详细
- 怎么用软件设计班旗_设计制作:班旗设计
- 用Excel地图可视化——2017世界各国和地区GDP排名(初步统计版)
- nginx 按天分割日志
热门文章
- java html 区别是什么意思_Java html 区别是什么
- 不能返回函数内部new分配的内存的引用_JNI开发之局部引用、全局引用和弱全局引用(三)...
- scatterpie | ggplot2的几何图形拓展包(1):如何在地图中添加饼图
- java递归统计_Java类递归计数
- Ubuntu 系统进不去 左上角减号
- influx没有web_influxdb 安装及简单使用
- cmd查看所有数据库 db2_db2 cmd命令操作
- oracle删除临时表空间语句,Oracle中临时表空间的清理
- 单片机ADC采样算法----中位值平均滤波法
- 怎样分析 JAVA 的 Thread Dumps