通过@Query注释按日期查询spring-data-monogdb没有返回结果

时间:2019-10-29 07:06:48

标签: java mongodb spring-boot spring-data-mongodb

我正在尝试使用@Query查询mongodb。实际上,日期被截断为小时/分钟/秒/毫秒为零(在插入和查找查询期间都被截断)。我正在尝试查找一年中特定日期的记录(例如2019-10-10)

我在mongodb字段中看到date类型,并存储为2019-10-10T00:00:00.000+00:00

当我调试到达弹簧的AbstractMongoQuery的代码时,我看到以下输出:
Query: { "someField" : "bla-bla", "date" : { "$date" : 1570665600000}}, Fields: {}, Sort: {} 并且没有记录返回。这是Document的String输出,但是我不确定它是如何实际发送到Mongo的。

当我尝试使用{date: ISODate('2019-10-10T00:00:00.000+00:00')}手动查询monogdb时,我确实得到了结果。

使用spring-boot 2.2.0.Release

请参见下面的代码:

public interface MyRepository extends CrudRepository<MyObj, String> {

    @Query(value = "{'someField': ?0,'date': ?1}")
    List<MyObj> findWithDate(String someField, Date date);

    .........
    .........
    .........
    .........
}

@Document(collection = "test")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder(builderClassName = "Builder", toBuilder = true)
public class MyObj {
    @Id private ObjectId id;
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    @Indexed private java.util.Date date;
    @Indexed private String someField;
}

注意:起初我没有使用@DateTimeFormat(iso = DateTimeFormat.ISO.DATE),由于在mongo中日期总是没有小时/分钟/ ...,因此它与我在问题描述中提到的相同。

我将不胜感激

0 个答案:

没有答案