mongo查询过滤条件java实例($and,$or,$eq,$ne)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011136197/article/details/79017106

查询账号下没有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);


猜你喜欢

转载自blog.csdn.net/u011136197/article/details/79017106