我想查询mongo集合以获取在给定日期之前创建的文档。我使用MongoRepository查询findByDateBefore()
。但事实证明,它不返回任何记录。这是我的代码实现(伪):
MyDocument模型
@Document(collection = "mydocument")
public class MyDocument {
@Id
String name;
Date creationDate;
}
存储库:
@Repository
public interface MyDocumentRepository extends MongoRepository<MyDocument, String> {
List<MyDocument> findByCreationDateBefore(Date date);
// @Query("{'creationDate': {"$lt": ?0}}")
// List<MyDocument> findbyCreationDateBefore(Date date)
}
服务代码:
java.util.Date today = new Date();
List<MyDocument> documents = myDocumentRepository.findByCreationDateBefore(today);
服务呼叫后记录的查询:
MongoTemplate: find using query: { "creationDate" : { "$lt" : { "$date" : "2020-03-12T13:17:23.784Z"}}} fields: null for class: class com.myrepo.model.MyDocument in collection: mydocument
这没有结果。我尝试使用自定义查询(存储库中的注释代码),该查询也不返回任何记录。我也尝试在mongo控制台中运行记录的查询,但它不返回任何结果:
{ "creationDate" : { "$lt" : { "$date" : "2020-03-12T13:17:23.784Z"}}}
但是当我在mongo控制台中使用新的Date时,它可以正常工作。例如。:
{ "creationDate" : { "$lt" : new Date("2020-03-12T13:17:23.784Z")}}
。
提到的解决方案here对我不起作用。