业务需要多个or条件拼接,起初错误写法:
Criteria criteria = new Criteria();
for (循环){
Criteria c = new Criteria();
....
业务逻辑
....
criteria.orOperator(c);
}
这种会报InvalidMongoDbApiUsageException,看orOperator源码得知会拼接多个or操作符导致提示you can't add a second '$or' expression specified as '$or
,用法理解错误
正确做法:
Criteria criteria = new Criteria();
List<Criteria> orCriterias = new ArrayList<>();
for (循环){
Criteria c = new Criteria();
....
业务逻辑
....
orCriterias.add(c);
}
// 只调用一次orOperator
criteria.orOperator(orCriterias.toArray(new Criteria[0]));