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来用会徒添很多麻烦。
相关推荐
Zhou1411367 小时前
SpringBoot_03_Web开发
前端·spring boot·python
蜗牛互联网7 小时前
WSL Containers GA:本地AI容器的生命周期、网络与治理验收
java·网络·人工智能·后端
Zhou1411368 小时前
SpringBoot_02_自动配置原理
java·spring boot·后端
FYKJ_20109 小时前
SSM校园失物招领系统41452-计算机课程设计、毕业设计
java·vue.js·spring boot·python·mysql·typescript·spark
卓怡学长9 小时前
w198基于springboot始于足下健康打卡平台的设计与实现
java·spring boot·spring·intellij-idea
子兮曰9 小时前
Node.js 50个优势场景盘点:一个人单干,为啥我多数时候只用它
前端·后端
IT_陈寒9 小时前
我花3小时debug,就因为JavaScript这个隐式转换坑
前端·人工智能·后端
程序猿阿越10 小时前
containerd如何拉取镜像
后端·kubernetes·源码阅读
一条小小yu10 小时前
为什么使用springboot
java·spring boot·后端
香瓜子rd10 小时前
MySQL InnoDB 并发控制核心原理:事务、隔离级别、MVCC 与锁机制
数据库·后端