MongoDB是典型的非关系型数据库,但是它的功能越来越复杂,很多项目中,我们为了快速拓展,甚至直接使用Mongo 来替代传统DB做数据持久化。
虽然MongoDB在支持具体业务时没有问题,但是由于它是文档型数据库,拥有一套独立的语法,不再支持传统的SQL。
开发人员发现在实际开发过程中,由于语法问题,在处理复杂的业务查询时,不知该如何下手,使不上劲。
在这里我总结了一下接触到的使用场景:
如果是简单的业务,那么我们直接使用spring JPA来实现就可以,比如这些操作:
1、创建
2、删除
3、修改
4、简单的查询
因为这些语句的逻辑往往不是很复杂,JPA完全可以胜任,而且还清晰直观。
如果是复杂的场景,我们就使用MongoTemplate 来组织条件逻辑:
假设背景是有张Student 表,结构如下:
我们已经预先插入了下边的数据:

基于 MongoTemplate 实现MongoDB的复杂查询-LMLPHP

(1)先来一个简单的
单条件查询:

1     private void simpleInQuery() {
2         Query query = new Query();
3         query.addCriteria(Criteria.where("classNo").ne(2));
4         List<Student> students = mongoTemplate.find(query, Student.class);
5         log.warn("the query result is: {}", students);
6     }
12-03 15:11