1.条件查询:
// 先实例化一个查询对象,参数为一个Criteria对象
Query query = new Query(criteria );
// 再实例化一个条件对象
Criteria criteria = new Criteria();
// 相当于sql:where id = id
criteria = Criteria.where("id").is(id);
// 把query对象和要进行操作的实体类作为参数,find方法为mongoTemplate封装的查询方法
return this.mongoTemplate.find(query,aaa.class);
2.模糊查询
// 先实例化一个查询对象,参数为一个Criteria对象
Query query = new Query(criteria );
// 再实例化一个条件对象
Criteria criteria = new Criteria();
// 使用正则表达式实现分词
Pattern pattern = Pattern.compile("^.*" + projectName.toString() + ".*$", Pattern.CASE_INSENSITIVE);
// regex方法相当于sql的like条件
criteria = Criteria.where("project_name").regex(pattern);
// 把query对象和要进行操作的实体类作为参数,find方法为mongoTemplate封装的查询方法
return this.mongoTemplate.find(query, aaa.class);
3.分页查询
// 先实例化一个查询对象,参数为一个Criteria对象
Query query = new Query(criteria);
// 再实例化一个条件对象
Criteria criteria = new Criteria();
// skip():跳过指定数量的数据;注意需要传入每页的大小和当前页数的参数
criteria.skip(pageSize*(pageNo-1));
//读取的记录条数
criteria.limit(pageSize);
// 把query对象和要进行操作的实体类作为参数,find方法为mongoTemplate封装的查询方法
return this.mongoTemplate.find(query, aaa.class);
4.对查询进行排序
// 先实例化一个查询对象
Query query = new Query();
// 实例化一个排序对象,参数为排序顺序,和对哪个字段进行排序
Sort sort = new Sort(Sort.Direction.DESC,"id");
// 把sort对象加入query对象中
query.with(sort);
// 把query对象和要进行操作的实体类作为参数,find方法为mongoTemplate封装的查询方法
return this.mongoTemplate.find(query,aaa.class);
5.查询总数:
// 实例化Criteria,相当于where id = id;
Criteria criteria= Criteria.where("id").is(id);
// 先实例化一个查询对象,参数为一个Criteria对象
Query query=new Query(criteria);
//count():查询记录总数
return this.mongoTemplate.count(query, StarLinkOperateLog.class);
6.新增:新增就比较简单了,下面说一下insert和save的区别:
1)插入重复数据时:
insert: 若新增数据的主键已经存在,则会抛 DuplicateKeyException 异常提示主键重复,不保存当前数据。
save: 若新增数据的主键已经存在,则会对当前已经存在的数据进行修改操作。
2)批操作时:
insert: 可以一次性插入一整个列表,不用进行遍历操作,效率相对较高。
save: 需要遍历列表,进行一个个的插入,效率相对较低。
代码:
// 插入一条数据
return mongoTemplate.insert(新增的对象);
// 插入多条数据
return mongoTemplate.insertAll(新增的对象列表);
7.更新操作:
更新操作有以下的方法,我就不一一演示了:
1)updateFirst 更改符合条件的第一个记录;
2)updateMulti 如果根据查询条件找到对应的多条记录,则会全部更新;
3)upsert 相当于 update+insert 如果根据条件没有对应的数据,则会进行插入操作;
4)findAndModify 查询然后更新;
// 实例化一个Query对象,传入条件对象参数
Query query = new Query(criteria);
// 根据id进行条件查询
Criteria criteria = Criteria.where("id").is(id);
// 实例化一个update对象
Update update = new Update();
// 指定需要更改的字段,设置新值
update.set("username","the new username");
// 传入需要的参数
return this.mongoTemplate.updateFirst(query,update,aaa.class);
8.删除操作:
1)根据条件删除:
// 实例化一个Query对象,传入条件对象参数
Query query = new Query(criteria);
// 实例化一个条件对象
Criteria criteria = Criteria.where("id").is(id);
// 调用remove方法传入条件和进行操作的实体类
return this.mongoTemplate.remove(query,aaa.class);
下面补充两种删除方法说明:
1)findAndRemove:查询出符合条件的第一个结果,并将符合条件的数据删除而且只会删除第一条;
2)findAllAndRemove:查询出符合条件的所有结果,并将符合条件的所有数据删除;
mongoTemplate的大部分操作我都做了示范了,当然公司里还有许多复杂的操作,我以后还会一一的跟大家分享,大家可以来学习一下。