Я пытаюсь запустить конвейер агрегации в проекте весенней загрузки, используя MongoTemplate
и структуру агрегации.
Мой запрос выполняется без каких-либо исключений. Но когда я пытаюсь вызвать getMappedResults()
в экземпляре AggregationResults
, он всегда дает мне пустой список. Однако, если я проверю результат в отладчике, я увижу, что метод getRawResults()
возвращает значения.
Я использую spring-boot версии 1.5.9.RELEASE и spring-boot-starter-data-mongodb версии 2.1.2. .РЕЛИЗ
Я не уверен, что я делаю неправильно.
Ниже приведен код для агрегации
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'