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
目录
相关文章
|
10天前
|
XML Java API
Spring Boot集成MinIO
本文介绍了如何在Spring Boot项目中集成MinIO,一个高性能的分布式对象存储服务。主要步骤包括:引入MinIO依赖、配置MinIO属性、创建MinIO配置类和服务类、使用服务类实现文件上传和下载功能,以及运行应用进行测试。通过这些步骤,可以轻松地在项目中使用MinIO的对象存储功能。
|
11天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
44 5
|
12天前
|
消息中间件 Java Kafka
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
43 5
|
14天前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
22 1
|
26天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
39 2
|
15天前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
27 0
|
2月前
|
NoSQL Java Redis
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
这篇文章介绍了Redis的基本命令,并展示了如何使用Netty框架直接与Redis服务器进行通信,包括设置Netty客户端、编写处理程序以及初始化Channel的完整示例代码。
62 1
redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。
|
2月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
97 2
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
146 1