Я пытаюсь выполнить простейшую операцию агрегирования, возможную с $ 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, например,
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]
Не могли бы вы посоветовать, как заставить работать пользовательский запрос?
Спасибо