在做mongodb的时候想根据多个条件动态组合查询相关数据网上没有找到合适的资料,参考了一些实例可是查询出来条件不起作用,然后就自己琢磨出这样的代码,记录一下!
/**
* 按照多条件搜索问题
* 分页
*/
public List<MyBean> searchMyBeanByCondition(MyVo vo) throws Exception {
Criteria c1=null;
Criteria c2=null;
Criteria c3=null;
ArrayList<Criteria> list=new ArrayList<Criteria>();
if (vo.getCatalog1()!=null){
c1 = Criteria.where(MyBean.FILD_CATALOG1).is(vo.getCatalog1());
list.add(c1);
}
if (vo.getCatalog()!=null){
c2=Criteria.where(MyBean.FILD_CATALOG).is(vo.getCatalog());
list.add(c2);
}
if (vo.getTitle()!=null){
//模糊查询
c3=Criteria.where(MyBean.FILD_TITLE).regex(".*?\\" +vo.getTitle()+ ".*");
list.add(c3);
}
Criteria[] arr=new Criteria[list.size()];
list.toArray(arr);
Criteria criteria=new Criteria().andOperator(arr);
Query query=new Query(criteria);
query.skip((vo.getPage()-1)*vo.getPageSize());
query.limit(vo.getPageSize());
List<MyBean> list= mongoTemplate.find(query, MyBean.class);
return list;
}