java中mongo的条件查询
2024-08-30 02:02:06
@Override
public Page<ProductInfo> findAll(Pageable pageable, ProductInfo productInfo) {
//创建一个操作聚合operations
List<AggregationOperation> operations = new ArrayList<>();
//创建一个条件类criteria
Criteria criteria = new Criteria();
//商品状态不为空
if (productInfo.getProductStatus()!=null){
//productStatus等于查询的商品状态这个条件添加进操作聚合operations
operations.add(Aggregation.match(criteria.and("productStatus").is(productInfo.getProductStatus())));
}
long totalCount = 0;
//总页数
if (operations!= null && operations.size() > 0){
//操作聚合
Aggregation aggregationCount = newAggregation(operations);
//查询总的数据条数,返回一个集合
AggregationResults<ProductInfo> resultsCount = mongoTemplate.aggregate(aggregationCount, "productInfo", ProductInfo.class);
totalCount = resultsCount.getMappedResults().size();
}else{
//操作聚合为空,查询总的数据条数
totalCount = mongoTemplate.findAll(ProductInfo.class).size();
}
//操作聚合添加页数乘以每页大小等于总页数
operations.add(Aggregation.skip((long) (pageable.getPageNumber()) * pageable.getPageSize()));
//操作聚合添加返回一页的数据
operations.add(Aggregation.limit(pageable.getPageSize()));
//操作聚合添加根据solveCount降序排序
// operations.add(Aggregation.sort(Sort.Direction.DESC, "solveCount"));
Aggregation aggregation = newAggregation(operations);
//根据条件查询数据
AggregationResults<ProductInfo> results = mongoTemplate.aggregate(aggregation, "productInfo", ProductInfo.class);
//返回结果的map和分页信息和总记录数
return new PageImpl<>(results.getMappedResults(),pageable,totalCount);
}
最新文章
- 第十七篇:使用窗口的cache属性加速SOUI的渲染
- 每天一个linux命令(51):rcp命令
- min_free_kbytes
- XP与Win2003下网站配置
- struts2 注解方式
- RabbitMQ之安装
- TCP/IP协议学习(一)
- jenkins学习:jenkins+gitlab
- LinkedStack的底层实现
- jquery.cookie用法及其注意点
- 学习Acegi应用到实际项目中(1)
- 加盟阿里!贾扬清被曝从Facebook离职,任阿里硅谷研究院VP
- 词典的实现(3)--使用JAVA类库ArrayList实现Map数据结构
- luogu P1486 [NOI2004]郁闷的出纳员
- Android利用RecognizerIntent识别语音并简单实现打电话动作
- HDU 1513 &;&; POJ 1159 Palindrome (DP+LCS+滚动数组)
- StreamSets 部署 Pipelines 到 SDC Edge
- ubuntu4arm 网站参考
- C# AOP实现
- hdu 4741 Save Labman No.004 (异面直线的距离)