mongo模糊查询,带有特殊字符需要转义
/** * 转义正则特殊字符 ($()*+.[]?\^{},|) * * @param keyword * @return */ public static String escapeExprSpecialWord(String keyword) { String[] fbsArr = { "\\", "$", "(", ")", "*", "+", ".", "[", "]", "?", "^", "{", "}", "|" }; for (String key : fbsArr) { if (keyword.contains(key)) { keyword = keyword.replace(key, "\\" + key); } } return keyword; }
Criteria criteria = new Criteria();
//项目名称
if (!ObjectUtils.isEmpty(mixingStationProductionRequesJson.getFgcmc())) {
// criteria.and("fgcmc").regex(".*?" + mixingStationProductionRequesJson.getFgcmc() + ".*?");
//项目名称中带(),造成检测不出来 将括号用反斜杠"\"进行转义 \(
String name=escapeExprSpecialWord(mixingStationProductionRequesJson.getFgcmc());
criteria.and("fgcmc").regex("^.*"+name+".*$");
}
Query query = Query.query(criteria);
List<MixingStationRealDataVo> list = mongoTemplate.find(query,MixingStationRealDataVo.class);