【问题标题】:How to execute @Query(value="") mongorepository query for fetching execution date records which is in string format如何执行@Query(value="") mongorepository 查询以获取字符串格式的执行日期记录
【发布时间】:2020-02-08 01:49:24
【问题描述】:

'executedDate' 是 mongodb 中字符串格式的字段,我需要通过使用 @Query(value="") 将字符串格式解析为 Date 格式来获取 2 个执行日期之间的记录

我已经在控制台中执行了 mongodb 查询,如下所示:

db.testExecution.aggregate( [ { $project: { date: { $dateFromString: { dateString: '$executionDate' } } } }, { $match: { date: { $lt: ISODate("2019-10 -16T06:35:03Z") } } } , { $match: { date: { $gt: ISODate("2019-09-16T06:55:03Z") } } } ] )

输出:

{ "_id" : ObjectId("5d7f8627ea9c671b877d554f"), "date" : ISODate("2019-09-16T06:55:10Z") }
{ "_id" : ObjectId("5d7f8627ea9c671b877d503f"), "date" : ISODate("2019-10-16T06:25:03Z") }
{ "_id" : ObjectId("5d7f8627ea9c671b877d502f"), "date" : ISODate("2019-09-16T10:55:55Z") }

我需要用 mongoRepository 查询格式写这个,

当我这样写查询时,

@Query(value = "{$project: {date: {$dateFromString: {dateString: '$executionDate'}}}}, {$match: {date: {$lt: ?0)}}} , {$match: {date: {$gt: ?1)}}}")
    List<TestResultResponseDomain> findByExecutionDate(Date from, Date to);

我收到如下错误。

Caused by: com.mongodb.MongoQueryException: Query failed with error code 2 and error message 'unknown top level operator: $project' on server localhost:27017
    at com.mongodb.operation.FindOperation$1.call(FindOperation.java:722) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.operation.FindOperation$1.call(FindOperation.java:711) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:471) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:415) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.operation.FindOperation.execute(FindOperation.java:711) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.operation.FindOperation.execute(FindOperation.java:83) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.Mongo$3.execute(Mongo.java:826) ~[mongodb-driver-3.6.3.jar:na]
    at com.mongodb.MongoIterableImpl.execute(MongoIterableImpl.java:130) ~[mongodb-driver-3.6.3.jar:na]
    at com.mongodb.MongoIterableImpl.iterator(MongoIterableImpl.java:77) ~[mongodb-driver-3.6.3.jar:na]
    at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:2440) ~[spring-data-mongodb-2.0.5.RELEASE.jar:2.0.5.RELEASE]

【问题讨论】:

标签: java spring-boot mongorepository


【解决方案1】:

您好,无法在 Spring-data-mongoDB 中使用 @Query 注释进行聚合。 您必须编写存储库类的自定义实现,然后使用具体类编写聚合。您可以使用以下链接了解如何操作。

https://xpadro.com/2016/04/data-aggregation-with-spring-data-mongodb-and-spring-boot.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    相关资源
    最近更新 更多