先来张表图看一看
运算符类型 |
运算符 |
描述 |
范围 |
$eq |
等于 |
$lt |
小于 |
|
$gt |
大于 |
|
$lte |
小于等于 |
|
$gte |
大于等于 |
|
$in |
判断元素是否在指定的集合范围里 |
|
$all |
判断数组中是否包含某几个元素,无关顺序 |
|
$nin |
判断元素是否不在指定的集合范围里 |
|
布尔运算 |
$ne |
不等于,不匹配参数条件 |
$not |
不匹配结果 |
|
$or |
有一个条件成立则匹配 |
|
$nor |
所有条件都不匹配 |
|
$and |
所有条件都必须匹配 |
|
$exists |
判断元素是否存在 |
|
其他 |
. |
子文档匹配 |
$regex |
正则表达式匹配 |
1.1、普通条件查询
Query query1 = new Query( Criteria.where("account").is("123456"));
List users = mongoTemplate.find(query1, User.class);
return users;
1.2、查询所有
List 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.1、新增
User user = new User();
user.setAccount("1245");
user.setPassword("321");
mongoTemplate.save(user);
查询数据已经存在了
他这个删除的主键要你自己在实体类中指定
@Id
private String user_id;
删除逻辑
User user = new User();
user.setUser_id("5cab0fe89e09c41573833ad0");
mongoTemplate.remove(user);
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);
我感觉这玩意才是最坑的,在官方文档中没找到,百度也没有找到一个有用的答案,自己搞了大半天才弄出来,坑货。。
在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 users = mongoTemplate.find(query1, User.class);
System.out.println(users);
Query query = new Query(Criteria.where("account").is("1245").and("password").is("841136"));
List users = mongoTemplate.find(query, User.class);
还有很多的高级查询,可以进入 Criteria 这个类去看源码,