门户网站建设解决方案,wordpress修改主题头部图片,焦作建设银行门户网站,发外链软件最近有个比较复杂的MongoDB查询需求#xff0c; 要求1#xff1a;获取最近订单表中的请求参数信息#xff0c;并需要按照请求参数中的账号进行去重 要求2#xff1a;数据量可能比较大#xff0c;因此需要做分页查询 研究了大半天#xff0c;终于搞出了解决方案#xff0…最近有个比较复杂的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来用会徒添很多麻烦。