Я пытаюсь запустить конвейер агрегации в проекте весенней загрузки, используя MongoTemplate
и структуру агрегации.
Мой запрос выполняется без каких-либо исключений.Но когда я пытаюсь вызвать getMappedResults()
в экземпляре AggregationResults
, это всегда дает мне пустой список.Однако, если я проверю результат в отладчике, то увижу, что метод getRawResults()
возвращает значения.
Я использую spring-boot версия 1.5.9.RELEASE и spring-boot-starter-data-mongodb версия 2.1.2.RELEASE
Я не уверен, что делаю неправильно.
Ниже приведен код агрегации
GroupOperation groupOperation = Aggregation.group("field1", "field2")
.count().as("count")
.max("timestamp").as("timestamp");
ProjectionOperation projectionOperation = Aggregation.project("field1", "field2", "count", "timestamp");
DBObject cursor = new BasicDBObject(10);
AggregationOptions aggregationOptions = Aggregation.newAggregationOptions().cursor(cursor).build();
Aggregation aggregation = Aggregation.newAggregation(groupOperation, projectionOperation).withOptions(aggregationOptions);
AggregationResults<Res> activities = mongoTemplate.aggregate(aggregation, "test_collection", Res.class);
Ниже приведен класс, в котором я пытаюсь отобразить результат
public class Res {
public String field1;
public String field2;
public Long timestamp;
public Integer count;
public Res() {
}
public Res(String field1, String field2, Long timestamp, Integer count) {
this.field1 = field1;
this.field2 = field2;
this.timestamp = timestamp;
this.count = count;
}
}
Примечание Если я пропускаю курсор в AggregationOptions
, я получаю следующую ошибку
'The 'cursor' option is required, except for aggregate with the explain argument'