春季数据 MongoDB 日期之间

2022-08-31 22:15:34

我使用弹簧数据mongodb。

我想要两个日期之间的记录。以下 MongoDB Query 的工作原理:

db.posts.find({startDate: {$gte: start, $lt: end}});

我尝试的Spring数据查询对象代码转换不起作用:

Query query = new Query();
query.addCriteria(Criteria.where("startDate").gte(startDate)
                            .and("startDate").lt(endDate));

构建我需要的 Mongo 查询的方法调用的正确顺序是什么?


答案 1

不要在条件中包含“and(”startDate“)”部分。

而不是:

query.addCriteria(Criteria.where("startDate").gte(startDate).and("startDate").lt(endDate));

您应该使用:

query.addCriteria(Criteria.where("startDate").gte(startDate).lt(endDate));

当您包含'and(“startDate”)'部分时,Mongo将其视为同一属性上的两个不同条目。


答案 2

您还可以添加查询注释:

@Query("{'date' : { $gte: ?0, $lte: ?1 } }")                 
public List<AnyYourObj> getObjectByDate(Date from, Date to); 

或者正确的弹簧数据方法签名:

public List<AnyYourObj> findByDateBetween(Date from, Date to);

这两种方法都给出了相同的结果。您可以在此处 https://www.baeldung.com/queries-in-spring-data-mongodb 和此处 https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/ 阅读更多内容


推荐