spring-data-mongodb : 从 ($gt, $lt) 到 ($gte, $lte)
spring-data-mongodb : Between change from ($gt, $lt) to ($gte, $lte)
在我的存储库中,我添加了以下方法:
List<Event> findByEventDateBetween(LocalDate start, LocalDate end);
spring-data-mongo 生成的查询是:
[debug] 2020-09-11 15:39:59,550 - o.s.d.m.c.MongoTemplate - find using
query: { "eventDate" : { "$gt" : { "$date" : 1577833200000 }, "$lt" :
{ "$date" : 1599775200000 } } } fields: Document{{}} for class: class
xxxxxx
有没有办法告诉 spring 数据在使用 时使用 $gte
和 $lte
而不是 $gt
和 $lt
在 关键字之间 ?
你可以借助@Query注解如下:
@Query(value = "{'eventDate':{ $gte: ?0, $lte: ?1}}")
List<Event> findByEventDateBetween(LocalDate start, LocalDate end);
下面的代码更简单:
List<Event> findByEventDateBetween(Range<LocalDate> dateRange);
通话:
findByEventDateBetween(Range.closed(start, end))
参考:
https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repository-query-keywords
lower / upper bounds ($gt / $gte & $lt / $lte) according to Range
在我的存储库中,我添加了以下方法:
List<Event> findByEventDateBetween(LocalDate start, LocalDate end);
spring-data-mongo 生成的查询是:
[debug] 2020-09-11 15:39:59,550 - o.s.d.m.c.MongoTemplate - find using query: { "eventDate" : { "$gt" : { "$date" : 1577833200000 }, "$lt" : { "$date" : 1599775200000 } } } fields: Document{{}} for class: class xxxxxx
有没有办法告诉 spring 数据在使用 时使用 $gte
和 $lte
而不是 $gt
和 $lt
在 关键字之间 ?
你可以借助@Query注解如下:
@Query(value = "{'eventDate':{ $gte: ?0, $lte: ?1}}")
List<Event> findByEventDateBetween(LocalDate start, LocalDate end);
下面的代码更简单:
List<Event> findByEventDateBetween(Range<LocalDate> dateRange);
通话:
findByEventDateBetween(Range.closed(start, end))
参考:
https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repository-query-keywords
lower / upper bounds ($gt / $gte & $lt / $lte) according to Range