Spring Data的坑-MQL解析方式

本文探讨了在使用Spring Data MongoDB时遇到的InvalidMongoDbApiUsageException错误,该错误涉及在查询中多次指定相同的`createTime`字段。通过Mongo Shell验证,确认MQL语句的正确形式,并分析了Spring Data MongoTemplate在处理相同字段多次出现时的解析问题。文章揭示了问题的根本原因在于`MongoTemplate`的构建查询过程,并提出了进一步的疑问:为何Mongo会选择最后一个条件作为查询条件。
摘要由CSDN通过智能技术生成

Spring Data的坑-MQL解析方式

org.springframework.data.mongodb.InvalidMongoDbApiUsageException: Due to limitations of the com.mongodb.BasicDocument, you can’t add a second ‘createTime’ expression specified as ‘createTime : Document{ {$lt=1598609707784}}’. Criteria already contains ‘createTime : Document{ {$gt=0}}’.

代码

    https://github.com/Yueshi9/thinkin-mongo

Question

先提出一个问题,看下面的代码,找出您认为的问题。

    public List<User> queryByTime(long startTime, long endTime) {
   
        Criteria criteria = Criteria.where("createTime").gt(startTime);

        // 中间省却各种查询条件
        criteria.and("createTime").lt(endTime);


        return mongoTemplate.find(Query.query(criteria), User.class);
    }

     ~~~~     结论是上述的代码是有问题的,会报简介中的错误。那么这个问题是处在哪里呢?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值