首先,我的问题是通过Spring JPA(MongoRepository)在MongoDB中搜索集合。
我的对象:
{
"_id" : ObjectId("5c78e1f447f39c2eacb229d7"),
"lab" : "xxx",
"type" : "Holiday",
"description" : "Lunar New Year",
"start_date" : ISODate("2019-02-04T02:37:42.152Z"),
"end_date" : ISODate("2019-02-08T06:37:42.152Z"),
"all_day" : true,
"_class" : "xxx.Event"
}
我可以在Mongo查询中按我的意愿做
db.getCollection('event').find({"start_date" : {$gte :ISODate( "2019-02-03T02:37:42.152Z") , $lte :ISODate( "2019-02-08T02:37:42.152Z")}})
(您可以将ISODate替换为新的日期)
但是要在春季做到这一点,我想这样做:
@Query(" $or: [ {start_date : {$gte :ISODate( ?0 ) , $lte :ISODate( ?1)}} , {end_date : {$gte :ISODate( ?0) , $lte :ISODate( ?1)}} ] } ")
List<Event> findAllEventByTime(String from, String to);
并以
结尾@Query("{ 'start_date' : {$gte : {'$date': '?0'}, $lte :{'$date': '?1'} }}")
List<Event> findAllEventByTime(String from, String to);
但是我再次遇到解析问题:
2019-03-22 10:09:48.261错误9316 --- [XNIO-2 task-1] o.z.problem.spring.common.AdviceTrait:内部服务器错误
org.bson.json.JsonParseException:无法将字符串作为日期解析为 org.bson.json.JsonReader.visitDateTimeExtendedJson(JsonReader.java:1057)
我尝试提出建议:
尝试参数:3月22日星期五10:09:48 ICT 2019和2019-03-22T03:09:48.227Z和2016-04-14 00:00:00
所有这些都消失了... 你们可以帮我修复它吗?
工作流:来自FE(字符串)的参数〜>转到BE〜>如上所述调用回购
答案 0 :(得分:1)
您可以使用spring data jpa
方法,如下所示:-
List<Event> findByStart_dateIsAfterAndEnd_dateIsBefore(Date startDate, Date endDate);
答案 1 :(得分:0)
我用其他方法解决它:
Page<Event> findAllByStartDateBetweenOrEndDateBetween(Instant fromDate1, Instant toDate1, Instant fromDate2, Instant toDate2, Pageable pageable);
List<Event> findAllByStartDateBetweenOrEndDateBetween(Instant fromDate1, Instant toDate1, Instant fromDate2, Instant toDate2);
@RequestParam Instant startDate, @RequestParam Instant endDate
并使用:
eventRepository.findAllByStartDateBetweenOrEndDateBetween(startDate, endDate, startDate, endDate))
答案 2 :(得分:0)
在json查询中解析日期时,我遇到了同样的问题。 这是Spring Data Mongo中的错误。解决方案是升级项目中的spring boot父级:
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.2.1.RELEASE</version>
</parent>
2.2.1.RELEASE版本可解决此问题。