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

简介: 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);
        }


目录
相关文章
|
10月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
790 2
|
11月前
|
人工智能 Java 机器人
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
Spring AI Alibaba集成Ollama,基于Java构建本地大模型应用,支持流式对话、knife4j接口可视化,实现高隐私、免API密钥的离线AI服务。
7393 2
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
|
11月前
|
监控 安全 Java
Spring Cloud 微服务治理技术详解与实践指南
本文档全面介绍 Spring Cloud 微服务治理框架的核心组件、架构设计和实践应用。作为 Spring 生态系统中构建分布式系统的标准工具箱,Spring Cloud 提供了一套完整的微服务解决方案,涵盖服务发现、配置管理、负载均衡、熔断器等关键功能。本文将深入探讨其核心组件的工作原理、集成方式以及在实际项目中的最佳实践,帮助开发者构建高可用、可扩展的分布式系统。
621 1
存储 JSON Java
981 0
|
11月前
|
监控 Java API
Spring WebFlux 响应式编程技术详解与实践指南
本文档全面介绍 Spring WebFlux 响应式编程框架的核心概念、架构设计和实际应用。作为 Spring 5 引入的革命性特性,WebFlux 提供了完全的响应式、非阻塞的 Web 开发栈,能够显著提升系统的并发处理能力和资源利用率。本文将深入探讨 Reactor 编程模型、响应式流规范、WebFlux 核心组件以及在实际项目中的最佳实践,帮助开发者构建高性能的响应式应用系统。
1448 0
|
11月前
|
监控 Cloud Native Java
Spring Integration 企业集成模式技术详解与实践指南
本文档全面介绍 Spring Integration 框架的核心概念、架构设计和实际应用。作为 Spring 生态系统中的企业集成解决方案,Spring Integration 基于著名的 Enterprise Integration Patterns(EIP)提供了轻量级的消息驱动架构。本文将深入探讨其消息通道、端点、过滤器、转换器等核心组件,以及如何构建可靠的企业集成解决方案。
898 0
|
11月前
|
监控 Kubernetes Cloud Native
Spring Batch 批处理框架技术详解与实践指南
本文档全面介绍 Spring Batch 批处理框架的核心架构、关键组件和实际应用场景。作为 Spring 生态系统中专门处理大规模数据批处理的框架,Spring Batch 为企业级批处理作业提供了可靠的解决方案。本文将深入探讨其作业流程、组件模型、错误处理机制、性能优化策略以及与现代云原生环境的集成方式,帮助开发者构建高效、稳定的批处理系统。
905 1
|
11月前
|
Kubernetes Java 微服务
Spring Cloud 微服务架构技术解析与实践指南
本文档全面介绍 Spring Cloud 微服务架构的核心组件、设计理念和实现方案。作为构建分布式系统的综合工具箱,Spring Cloud 为微服务架构提供了服务发现、配置管理、负载均衡、熔断器等关键功能的标准化实现。本文将深入探讨其核心组件的工作原理、集成方式以及在实际项目中的最佳实践,帮助开发者构建高可用、可扩展的分布式系统。
871 0
|
11月前
|
安全 Java 数据安全/隐私保护
Spring Security 核心技术解析与实践指南
本文档深入探讨 Spring Security 框架的核心架构、关键组件和实际应用。作为 Spring 生态系统中负责安全认证与授权的关键组件,Spring Security 为 Java 应用程序提供了全面的安全服务。本文将系统介绍其认证机制、授权模型、过滤器链原理、OAuth2 集成以及最佳实践,帮助开发者构建安全可靠的企业级应用。
580 0

热门文章

最新文章

推荐镜像

更多