Интересно, что я не могу вычислить среднее значение для Spring 5 и MongoDB.
В базе 40 записей с этим форматом
Результат (id = 5e4adeca9eab5f052e2ac239, date = 2020-02-12, value = 1.048097596376957)
Мне интересно получить дату от t1 до t2 и среднее значение всех совпадений.
Код, который я Написанное и заданное в NPE выглядит следующим образом:
MatchOperation filterDate = match(Criteria.where("date").gte(startWeek).lte(now));
GroupOperation groupByValue = group("value").avg("value").as("averageValue");
Aggregation aggregation = newAggregation(filterDate, groupByValue);
AggregationResults<Document> result = mongoTemplate.aggregate(aggregation, "unknown", Document.class);
Document document = result.getUniqueMappedResult();
document.getDouble("averageValue");
Когда будет вызван getDouble, произойдет NPE. Критерии соответствия на мой взгляд верны. У GroupOperation у меня есть сомнения.
2020-02-17 19: 43: 22.661 DEBUG 10148 --- [nio-8080-exe c -1] osdata.mongodb.core. MongoTemplate: Выполнение агрегации: [{"$ match": {"date": {"$ gte": {"$ date": 1581289200000}, "$ lte": {"$ date": 1581894000000}}}}, { "$ group": {"_id": "$ value", "averageValues": {"$ avg": "$ value"}}}] в коллекции неизвестен
import org.springframework.data.annotation.Id;
public class Result {
@Id
private String id;
private LocalDate date;
private Double value;
public Result(LocalDate date, Double value) {
this.date = date;
this.value = value;
}
}
Интересно о группировке. Это необходимо? И нужна ли мне коллекция?