我正在尝试使用$ 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 ...
要使用Spring存储库对象运行聚合组查询,必须使用@Aggregation而不是@Query
。