目录
一、springboot使用聚合方法处理业务查询排序心得
二、分页代码
三、对二中condSortParam参数进行加工后的程序
五、总结
一、springboot使用聚合方法处理业务查询排序心得
- 思路。此文编程部分思路大部分通过文心一言(免费版本即可) 获取。
注意:但在首次使用所给的答案绕了远路,第二回通过给他发送明确的内容做基础,如发送 mongosh脚本后 给出了编码 才拿到正确的解答方式
注意:在springboot中使用正确的方式编程,springboot中使用aggregate方法与使用mongosh 脚本基本方法名称相同, 不然会出现问题(奇怪的问题) - 如下是提的问题。询问文心一言内容
- 注意首先编写mongosh脚本进行查询。查询结果正确后。询问文心一言获取springboot的编程代码
如:db.document.aggregate([{ $addFields: { sortOrder: { $cond: { if: { $eq: ["$status", "8"] }, then: 1, else: { $cond:{ if: { $eq: ["$status", "9"] },then: 2, else: -1 } } } } } }, { $sort: { sortOrder: -1, applyTime: -1 } },{ $project: { _id: 1, accNum: 1, status: 1, applyTime: 1 } } ]);将上述脚本 用springboot 编程实现
二、分页代码
-
注意:此代码为分页方法,传入的CondSortParam是经过加工后传入的,带有mongo聚合查询需要的AggregationOperation与SortOperation -
注意:Aggregation.newAggregation中 AggregationOperation参数的排列顺序会影像查询结果
例如:排序1
查询结果会先排序后通过条件进行处理。SortOpertion, AddFieldsOpertion.....解决方法:倒置:AddFieldsOpertion, SortOpertion.../* * 分页公共方法 */ public static <T> PageVO<T> pagination(PageRequestDTO dto, Class<T> tClass, MongoTemplate mongoTemplate, CondSortParam condSortParam) { # 获取查询条件 Criteria criteria = handleCriteria(dto); // 添加查询条件 MatchOperation matchOperation = Aggregation.match(criteria); // 计算总数, 分页 Query query = new Query(); query.addCriteria(criteria); if (!ObjectUtils.allNotNull(dto.getCurrentPageNum())) { dto.setCurrentPageNum(0); } if (!ObjectUtils.allNotNull(dto.getSize())) { dto.setSize(10); } long count = mongoTemplate.count(query, tClass); log.info("统计sql: {}", query); int offset = (dto.getCurrentPageNum() - 1) * dto.getSize(); # 分页条件处理 SkipOperation skipOperation = Aggregation.skip(offset); LimitOperation limitOperation = Aggregation.limit(dto.getSize()); Aggregation aggregation = null; List<AggregationOperation> list = new ArrayList<>(); if(condSortParam != null) { list.add(matchOperation

本文介绍了如何在SpringBoot应用中使用聚合方法处理带有条件的业务查询排序,包括使用mongosh脚本作为基础,以及处理分页逻辑,特别是针对`CondSortParam`参数的复杂排序操作。作者强调了正确编程和理解工具使用的重要性,指出依赖通用搜索可能无法深入理解工具的全部功能。
最低0.47元/天 解锁文章
6486

被折叠的 条评论
为什么被折叠?



