public interface UserRepository extends IMongoRepository<User, ObjectId> {
default List<User> list(ObjectId id){
Criteria criteria = Criteria.where("_id").is(id);
Query q = new Query(criteria);
return this.getMongoOperations().find(q, this.getEntityClass());
}
}
一、普通比较操作
Criteria criteria = Criteria.where("_id").is(id);
Criteria criteria1 = Criteria.where(User.Fields.name).is("zhangsan");
Criteria criteria2 = Criteria.where(User.Fields.name).exists(true)
.and(User.Fields.age).lt(20);
Criteria criteria3 = Criteria.where(User.Fields.age).gt(20)
.and(User.Fields.city).in("guanzhou", "shenzhen");
Criteria criteria4 = Criteria.where(User.Fields.age).ne(20)
.and(User.Fields.city).nin("guanzhou", "shenzhen");
Criteria criteria6 = Criteria.where(User.Fields.age).mod(10, 1)
;
二、复杂操作
(1)相同字段与
Criteria criteria7 = new Criteria().andOperator(Criteria.where(User.Fields.age).gt(5),
Criteria.where(User.Fields.age).lt(10));
(2)相同字段或
Criteria criteria8 = new Criteria().orOperator(Criteria.where(User.Fields.age).lt(5),
Criteria.where(User.Fields.age).gt(10));
(3)数组个数
Criteria criteria5 = Criteria.where(User.Fields.addresses).size(2);
(4)数组至少存在一个元素满足所有条件
Criteria criteria9 = Criteria.where(User.Fields.childAges)
.elemMatch(new Criteria().gt(10).lt(12));
Criteria criteria10 = Criteria.where(User.Fields.addresses)
.elemMatch(new Criteria().and("street").is("wushan").and("city").in("shenzhen"));
(5)数组元素包含所有指定元素
Criteria criteria11 = Criteria.where(User.Fields.childAges)
.all(10, 11);
(6)数组满足所有条件,不一定是同一元素满足所有条件
Criteria criteria12 = Criteria.where(User.Fields.childAges)
.is(new Criteria().gt(10).lt(12));
(7)正则
Criteria criteria5 = Criteria.where(User.Fields.city).regex("^g.*$");