MongoTemplate 增删改查,or、and等复杂查询

6 篇文章 0 订阅
5 篇文章 0 订阅

 先来张表图看一看

运算符类型

运算符

描述

范围

$eq

等于

$lt

小于

$gt

大于

$lte

小于等于

$gte

大于等于

$in

判断元素是否在指定的集合范围里

$all

判断数组中是否包含某几个元素,无关顺序

$nin

判断元素是否不在指定的集合范围里

布尔运算

$ne

不等于,不匹配参数条件

$not

不匹配结果

$or

有一个条件成立则匹配

$nor

所有条件都不匹配

$and

所有条件都必须匹配

$exists

判断元素是否存在

其他

.

子文档匹配

$regex

正则表达式匹配

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  这个类去看源码,

  • 11
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值