Spring Boot和MongoDB未知运算符:$ last

问题描述 投票:0回答:1

我正在尝试使用$ group执行最简单的聚合操作:

{ "_id" : "$sensor", "lastTimestamp" : { "$last" : "$timestamp"}}

以下是示例记录:

sensor: A
timestamp: 3:27:14
value: 3.29

sensor: A
timestamp: 4:27:14
value: 5.29

如果我在MongoDB Compass中执行查询,那么它将返回有效结果:

_id: "A"
lastTimestamp: 4:27:14

例如,如果我将其作为Spring Data Reposirory的自定义查询执行,则>]

public interface EventDataProvider extends MongoRepository<Event, String> {

    @Query("{ \"_id\" : \"$sensor\", \"lastTimestamp\" : { \"$last\" : \"$timestamp\"}}")
    List<Object> customQuery();
}

然后我得到例外:

com.mongodb.MongoQueryException: Query failed with error code 2 and error message 'unknown operator: $last' on server localhost:27017
    at com.mongodb.operation.FindOperation$1.call(FindOperation.java:735) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.operation.FindOperation$1.call(FindOperation.java:725) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.operation.OperationHelper.withReadConnectionSource(OperationHelper.java:463) ~[mongodb-driver-core-3.11.2.jar:na]

您能否建议如何使自定义查询有效?

谢谢

我正在尝试使用$ group执行最简单的聚合操作:{“ _id”:“ $ sensor”,“ lastTimestamp”:{“ $ last”:“ $ timestamp”}}以下是示例记录:sensor:A时间戳:3:27:14 ...

mongodb spring-boot spring-data-mongodb
1个回答
0
投票

要使用Spring存储库对象运行聚合组查询,必须使用@Aggregation而不是@Query

© www.soinside.com 2019 - 2024. All rights reserved.