因为任务需要,刚接触MongoDB,需要实现复杂查询,却苦于网上找不到涉及排除某些条件的复杂条件查询,一番苦心自己终于琢磨出符合需求的结果,特此展示给大家
LocalDate finish = LocalDate.parse("2018-12-01" , DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate begin = LocalDate.parse("2018-10-01" , DateTimeFormatter.ofPattern("yyyy-MM-dd"));
//新建Query对象
Query query = new Query();
//创建Criteria对象,匹配查询条件
Criteria criteria = Criteria.where("sex").in("男");
//并且日期在2018-10-01~2018-12-01之间;gte:大于或等于,gt:大于
criteria.and("date").gte(beginDate).lte(finishDate);
//排除类型为学生且兴趣为篮球的数据,即:既是学生又喜欢篮球的数据项会被排除,是学生而没有兴趣或其它兴趣的不会排除。
criteria.norOperator(Criteria.where("type").is("学生").and("hobby").is("篮球"));
//查询
query.addCriteria(criteria);
//按照'日期'字段降序,即最新日期数据排前面
query.with(new Sort(Sort.Direction.DESC, "date"));
//直接获取符合查询条件的集合,collection名:"order"
List<Order> order = mongoTemplate
.find(query, Order.class, "order");
可参考文档:https://www.w3resource.com/mongodb/mongodb-or-nor-operators.php
官方文档:https://docs.mongodb.com/manual/reference/operator/query/nor/
MongoDB逻辑操作符$or,
a
n
d
,
and,
and,not,$nor:https://blog.csdn.net/yaomingyang/article/details/75103480