查询账号下没有org_id ,且对应的company字段也为空,且手机号码是存在的用户
BasicDBObject submitQuery = new BasicDBObject();
submitQuery.put("$and", getQuery());
submitQuery.put("$and", getMobileQuery());
private static List<DBObject> getQuery(){
List<DBObject> list = Lists.newArrayList();
List<DBObject> orgList = Lists.newArrayList();
orgList.add(new BasicDBObject("org_id", new BasicDBObject("$eq", null)));
orgList.add(new BasicDBObject("org_id", new BasicDBObject("$eq", "")));
orgList.add(new BasicDBObject("org_id", new BasicDBObject("$eq", 0L)));
List<DBObject> companyList = Lists.newArrayList();
companyList.add(new BasicDBObject("company", new BasicDBObject("$eq", null)));
companyList.add(new BasicDBObject("company", new BasicDBObject("$eq", "")));
list.add(new BasicDBObject("$or", orgList));
list.add(new BasicDBObject("$or", companyList));
return list;
}
private static List<DBObject> getMobileQuery(){
List<DBObject> phoneList = Lists.newArrayList();
phoneList.add(new BasicDBObject("mobile", new BasicDBObject("$ne", null)));
phoneList.add(new BasicDBObject("mobile", new BasicDBObject("$ne", "")));
return phoneList;
}
//如果是 .. and( 1 = 1 or 2 = 2) 里的or查询,需要用下种方式
BasicDBList nameCondList = new BasicDBList();
BasicDBList nameCondArray= new BasicDBList();
if(StringUtil.isNotNull(values) && values.length > 0){
for(int j = 0; j < values.length; j++){
BasicDBObject condition = new BasicDBObject();
Pattern pattern = Pattern.compile("^.*" + values[j] + ".*$", Pattern.CASE_INSENSITIVE);
condition.put("name", pattern);
nameCondArray.add(condition);
}
//模糊查询用或者来匹配
nameCondList.add(new BasicDBObject(QueryOperators.OR, nameCondArray));
}
submitQuery.put(QueryOperators.AND, nameCondList);