SpringBoot集成spring-data-mongodb 技术点记录 --分组分页查询

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: SpringBoot集成spring-data-mongodb 技术点记录 --分组分页查询

spring-data-mongodb --分组分页查询

在项目实际应用中记录mongodb分组分页查询操作

注意:

  1. MongoDB默认时间是utc时间,返回前端的数据需要做处理
  2. 如果查询条件有时间区间的话,不需要做转换,MongoDB会自动转为utc时间处理

代码:

// 根据条件查询Criteriacriteria=Criteria.where("taskId").exists(true);
if (failTaskQueryVo.getChannelName() !=null&&!"".equals(failTaskQueryVo.getChannelName())) {
criteria.and("channelType").is(failTaskQueryVo.getChannelName());
        }
// 时间(这里必须开始时间跟结束时间写一起,否则会报错)if (failTaskQueryVo.getPushStartTime() !=null&&!"".equals(failTaskQueryVo.getPushStartTime()) 
&&failTaskQueryVo.getPushEndTime() !=null&&!"".equals(failTaskQueryVo.getPushEndTime())) {
criteria.and("createTime").gt(failTaskQueryVo.getPushStartTime()).lt(failTaskQueryVo.getPushEndTime());
        }
Aggregationagg=Aggregation.newAggregation(
// 条件Aggregation.match(criteria),
// 分组字段以及其他分组后要展示的字段Aggregation.group("taskId").count().as("failCount")
                .last("channelType").as("channelType")
                .last("createTime").as("createTime")
                .last("message.msgTitle").as("msgTitle")
                .last("message.msgSummary").as("msgSummary")
                .last("message.msgContent").as("msgContent")
                .last("message.sendGroupType").as("sendGroupType"),
// 分页  Aggregation.skip(failTaskQueryVo.getPageNum() >1? (failTaskQueryVo.getPageNum() -1) *failTaskQueryVo.getPageSize() : 0L),  
Aggregation.limit(failTaskQueryVo.getPageSize()),
// 最终要展示的字段Aggregation                        .project("failCount", "channelType", "createTime", "msgTitle", "msgSummary", "msgContent",
"sendGroupType")
// 重命名taskId                        .andExclude("_id").and("_id").as("taskId")
// 格式化时间                        .andExpression("{$dateToString:{format:'%Y-%m-%d %H:%M:%S',date:'$createTime',timezone: 'Asia/Shanghai'}}")
                        .as("createTime"));
AggregationResults<Map>results=mongoTemplate.aggregate(agg, "msgTaskUserFailCollection", Map.class);
List<Map>failMsgList=newArrayList<>();
SimpleDateFormatsdf=newSimpleDateFormat("yyy-MM-dd HH:mm:ss");
for (Mapmap : results) {
// 返回前端处理时间Datedate= (Date) map.get("createTime");
map.put("createTime", sdf.format(date));
failMsgList.add(map);
        }


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
1月前
|
NoSQL Java MongoDB
Springboot WebFlux项目结合mongodb进行crud
这篇文章介绍了如何使用Spring Boot WebFlux框架结合MongoDB进行基本的CRUD(创建、读取、更新、删除)操作,包括项目设置、实体类和Repository的创建、控制器的实现以及配置文件的编写。
42 0
Springboot WebFlux项目结合mongodb进行crud
|
1月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
2月前
|
存储 NoSQL 关系型数据库
非关系型数据库-MongoDB技术(二)
非关系型数据库-MongoDB技术(二)
|
10天前
|
安全 测试技术 数据安全/隐私保护
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
|
1月前
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
19 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
1月前
|
监控 Java 应用服务中间件
Spring和Spring Boot的区别
Spring和Spring Boot的主要区别,包括项目配置、开发模式、项目依赖、内嵌服务器和监控管理等方面,强调Spring Boot基于Spring框架,通过约定优于配置、自动配置和快速启动器等特性,简化了Spring应用的开发和部署过程。
50 19
|
27天前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
52 2
|
2月前
|
存储 中间件 API
ThinkPHP 集成 jwt 技术 token 验证
本文介绍了在ThinkPHP框架中集成JWT技术进行token验证的流程,包括安装JWT扩展、创建Token服务类、编写中间件进行Token校验、配置路由中间件以及测试Token验证的步骤和代码示例。
ThinkPHP 集成 jwt 技术 token 验证
|
27天前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
48 1