MongoTemplate 增删改查,or、and等复杂查询
先来张表图看一看
1、查询(查询太多了,我就把比较常用的例举出来)
1.1、普通条件查询
Query query1 = new Query( Criteria.where("account").is("123456")); List<User> users = mongoTemplate.find(query1, User.class); return users;
1.2、查询所有
List<User> users = mongoTemplate.findAll( User.class); System.out.println(users);
1.3、查询单条
Query query = new Query( Criteria.where("account").is("acafafg")); User users = mongoTemplate.findOne(query, User.class); System.out.println(users);
2、新增
2.1、新增
User user = new User(); user.setAccount("1245"); user.setPassword("321"); mongoTemplate.save(user);
查询数据已经存在了
3、删除
他这个删除的主键要你自己在实体类中指定
@Id private String user_id;
删除逻辑
User user = new User(); user.setUser_id("5cab0fe89e09c41573833ad0"); mongoTemplate.remove(user);
4、修改
updateFirst 更新查询会返回结果集的第一条
Query query = new Query(Criteria.where("user_id").is("101887779542072")); Update update = new Update().set("account", "1245").set("phone", "123"); mongoTemplate.updateFirst(query, update, User.class);
5、or 查询
我感觉这玩意才是最坑的,在官方文档中没找到,百度也没有找到一个有用的答案,自己搞了大半天才弄出来,坑货。。
在MongoTemplate 中 or 是用 orOperator表示的。
Criteria criteria = new Criteria(); criteria.orOperator(Criteria.where("phone").is("534289"),Criteria.where("account").is("534289")); Query query1 = new Query(criteria); List<User> users = mongoTemplate.find(query1, User.class); System.out.println(users);
6、and 查询
Query query = new Query(Criteria.where("account").is("1245").and("password").is("841136")); List<User> users = mongoTemplate.find(query, User.class);
还有很多的高级查询,可以进入 Criteria 这个类去看源码,