java中mongo的条件查询
@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);
}
java中mongo的条件查询的更多相关文章
- SQL 中的多条件查询
在应用程序开发中,多条件查询是个经常遇到的情况,最简单最麻烦的方法是把所有的可能情况都考虑到,但是无疑是繁琐的,而且很容易漏掉可能的情形,下面是SQL语句实现多条件查询的情况 select * fro ...
- java web中的多条件查询
转自:http://blog.csdn.net/xulu_258/article/details/46623317 所谓多条件查询即为用户输入想要查询的条件,然后根据用户输入的条件进行查询. 当用户有 ...
- java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)
1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...
- Hibernate多对多关联映射的HQL中的in条件查询问题
群里有朋友求解一个问题,高分求一条HQL多对多查询语句 . 问题描述见 http://topic.csdn.net/u/20090621/16/4eac6fe0-bf3e-422e-a697-f758 ...
- 浅谈Java中的Condition条件队列,手摸手带你实现一个阻塞队列!
条件队列是什么?可能很多人和我一样答不出来,不过今天终于搞清楚了! 什么是条件队列 条件队列:当某个线程调用了wait方法,或者通过Condition对象调用了await相关方法,线程就会进入阻塞状态 ...
- 用Set中元素做条件查询
一个老师教许多学生,一个学生被许多老师教,一个学生有好多书,同一种书被许多同学拥有.查询教拥有书"a"的学生的老师: class teacher{ String id; ...
- php中的多条件查询
首先是查询所有,步骤不详述,连接数据库,查询表中的所有信息,foreach循环以表格的形式打印出来 然后就是form表单中提交查询的数据,这里以post方式提交到本页面,所以要判断post中是否有值, ...
- java中Mongo
1. query.fields().include("idfa").include("imei").include("id").inclu ...
- Java中对数据库的查询和增加内容
先添加jar包 查询数据库中的信息 加载访问驱动,com.mysql.jdbc.Driver--连接到库--写SQL语句 用while循环把表中的信息从第一条到最后一条打印出来,括号中的数字是代表数据 ...
随机推荐
- 打劫房屋 · House Robber
[抄题]: 假设你是一个专业的窃贼,准备沿着一条街打劫房屋.每个房子都存放着特定金额的钱.你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打劫时,该系统会自动报警 ...
- import c++ project to eclipse cdt with exiting makefile
Step 2: You are now ready to build your project. To build your project, select Project > Build Pr ...
- 【转】Defunct进程 僵尸进程
在测试基于 DirectFB+Gstreamer 的视频联播系统的一个 Demo 的时候,其中大量使用 system 调用的语句,例如在 menu 代码中的 system("./play&q ...
- html 中的<script>标签
https://www.w3.org/TR/html51/semantics-scripting.html#the-script-element 一. <script type='text/ja ...
- 对ConditionQueue和锁的理解
1. 什么时候使用conditionQueue 使用conditionQueue的一个最基本的条件是,操作和状态相关,而且是多线程同时访问的状态. 也就是说在使用conditionQueue的时候, ...
- BTrace追踪Hadoop部署
Hadoop集成BTrace 1.BTrace 1.1BTrace部署 1.下载BTrace工具包,官网地址:https://kenai.com/projects/btrace/downloads/d ...
- 企业搜索引擎开发之连接器connector(二十)
连接器里面衔接数据源与数据推送对象的是QueryTraverser类对象,该类实现了Traverser接口 /** * Interface presented by a Traverser. Used ...
- Postgres 主从配置(五)
PostgreSQL 9.4 新增的一个特性, replication slot, 1. 可以被流复制的sender节点用于自动识别它xlog中的数据在下面的standby中是否还需要(例如, st ...
- Android源码设计模式分析开源项目
简述 该项目通过分析Android系统中的设计模式来提升大家对设计模式的理解,从源码的角度来剖析既增加了对Android系统本身的了解,也从优秀 的设计中领悟模式的实际运用以及它适用的场景,避免在实际 ...
- C#获取枚举的描述
public enum StatusEnum { /// <summary> /// 运行中 /// </summary> [Description("运行中&quo ...