我正在尝试使用@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中日期总是没有小时/分钟/ ...,因此它与我在问题描述中提到的相同。
我将不胜感激