SpringBoot环境MongoDB分页+去重+获取去重后的原始数据

最近有个比较复杂的MongoDB查询需求,
要求1:获取最近订单表中的请求参数信息,并需要按照请求参数中的账号进行去重
要求2:数据量可能比较大,因此需要做分页查询

研究了大半天,终于搞出了解决方案,因此记录一下供有需要的同学参考。
感谢国家、感谢互联网、感觉菜鸟教程、感谢MongoDB、感谢所有人
菜鸟教程:https://www.runoob.com/mongodb/mongodb-aggregate.html

难点分析: 分页+分组去重+获取原始数据

代码如下

本来对于MongoDB的复杂查询,我是习惯使用QuerydslPredicateExecutor这种方式的,但是QuerydslPredicateExecutor似乎还不支持分组~~(也可能是我太菜,不知道而已)~~ ,所以无奈之下采用了Aggregation聚合的这种方式。Aggregation是MongoDB提供的一个特性,这种方式基本上相当于在MongoDB执行原生查询了。

本质上是通过skip和limit实现分页效果,通过match实现条件查询,通过group实现分组,最后使用$first将分组后第一条记录中的request字段检索出来。

具体语义大家可以参考菜鸟教程。

总结与思考

习惯了使用Mysql这种关系型数据库,对MongoDB文档型数据库的了解比较生疏,就目前而言Mysql与MongoDB的实际运用场景对我仍然存在许多困惑,有了解的大佬希望能够在评论区指点一下。谢谢

  • 不确定MongoDB是否只适合存储做一些非事务型、非结构化的数据,因为对MongoDB数据进行中间处理比较复杂(因为MongoDB的数据都是非结构化的)。
  • 或许MongoDB更适合大数据场景下做数据仓库,因为数据采集通常都是一些非结构化数据。
  • 将MongoDB当成Mysql来用会徒添很多麻烦。
相关推荐
RainbowSea1 小时前
github 仓库主页美化定制
后端
RainbowSea1 小时前
从 Spring Boot 2.x 到 3.5.x + JDK21:一次完整的生产环境迁移实战
java·spring boot·后端
笨手笨脚の1 小时前
Spring Core常见错误及解决方案
java·后端·spring
奶油松果1 小时前
Springboot自动装配 - redis和redission
java·spring boot·redis
计算机毕设匠心工作室2 小时前
【python大数据毕设实战】全球大学排名数据可视化分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
千寻技术帮2 小时前
10413_基于Springboot的智慧养老院管理系统
spring boot·mysql·源码·安装·文档·ppt·养老院
VX:Fegn08952 小时前
计算机毕业设计|基于Java人力资源管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·后端·课程设计
荔枝hu2 小时前
springboot和shiro组合引入SseEmitter的一些坑
java·spring boot·后端·sseeitter
老华带你飞2 小时前
健身房|基于springboot + vue健身房管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
JIngJaneIL3 小时前
基于Java酒店预约系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot