SpringBoot2.1.9 MongoDB的Query语法

本文介绍使用MongoDB进行各种条件查询的方法,包括基本的条件匹配、数组元素查询、复合条件组合等高级查询技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.*$");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值