关于MongoDB的自定义多条件查询OR/AND

以前没接触过MongoDB 最近维护一个MongoDB项目

关于mongodb的自定义条件查询记录一下,主要是OR/AND/模糊查询需要注意一下

业务场景 根据创建人ID,未删除 以及自定义查询条件(name,address)的模糊查询来获取station集合
//2019-01-10获取当前登录人自己建的场站 

BasicDBList queryList = new BasicDBList(); //查询条件集合
BasicDBObject queryObj = new BasicDBObject(); //默认查询条件对象
queryObj.put("createUser", su.getId()); 
queryObj.put("deleteFlag", false);//排除已删除 
queryList.add(queryObj); //默认查询条件存放到查询条件集合
 if (StringUtils.isNotBlank(form.getSearch_v())) {//自定义条件查询 
    BasicDBObject dbObj = new BasicDBObject(); //自定义查询对象
    BasicDBList condList = new BasicDBList(); //自定义条件查询集合
    BasicDBObject condObj1= new BasicDBObject(); //这里注意自定义查询条件不确定是name,还是address,所以分别接收自定义查询条件
    BasicDBObject condObj2= new BasicDBObject(); 
    Pattern pattern = Pattern.compile("^.*"+form.getSearch_v()+".*$",Pattern.CASE_INSENSITIVE); 	//mondodb的模糊查询,类似mysql的like	  				
    condObj1.put("name", pattern); //存放第1个自定义查询条件
    condObj2.put("address", pattern); //存放第2个自定义查询条件
    condList.add(condObj1); //添加自定义查询条件到自定义条件查询集合
    condList.add(condObj2); //添加自定义查询条件到自定义条件查询集合
    dbObj.put("$or", condList); //把自定义查询条件集合转换成自定义查询条件对象,注意这两个条件是或者关系(OR)
    queryList.add(dbObj); //把这个自定义查询条件也放到查询条件集合中
} 
    BasicDBObject dbQuery = new BasicDBObject(); //把查询条件集合转换成查询条件对象
    dbQuery.put("$and",queryList); //这里默认查询条件和自定义查询条件是并且关系(and)
	//至此查询条件对象就封装好了.后面用框架的查询方法即可.
    list = facade.findBy(Station.class,dbQuery);

`

你可能感兴趣的:(MongoDB)