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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值