在mongodb的查询中,我们经常需要使用类似select * from tablename where f1 >= value1 and f1 <= value2这样的查询语句。在mongodb的查询语言中,如果要针对同一字段添加多个查询条件,不能简单的使用类似:
Criteria criteria = Criteria.where("countValue").gte(10).and("countValue").lte(20);
这种方式在运行期会出现类似 countValue不能设置第二个查询条件 的异常提示。
实际这种针对同一字段的多个条件,需要采用以下方式构造Criteria实例:
Criteria criteria = Criteria.where("rcdStatus").in("01", "03");
Query query = Query.query(criteria);
Criteria newCriteria = new Criteria();
newCriteria.andOperator(Criteria.where("alertTime").gte(qryCondVo.getStartTime()), Criteria.where("alertTime").lte(qryCondVo.getEndTime()));
query.addCriteria(newCriteria);
以上代码会生成类似select * from tableName from rcdStatus in ('01', '03') and alertTime >= qryCondVo.getStartTime() and alertTime <= qryCondVo.getEndTime()的查询语句。