【发布时间】:2020-06-01 18:29:45
【问题描述】:
我想知道我无法计算 Spring 5 和 MongoDB 的平均值。
数据库中有 40 个具有这种格式的条目
结果(id=5e4adeca9eab5f052e2ac239,日期=2020-02-12, 值=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。 matchCriteria 在我看来是正确的。 对于 GroupOperation,我有疑问。
2020-02-17 19:43:22.661 调试 10148 --- [nio-8080-exec-1] os.data.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;
}
}
我想知道分组。这有必要吗? 我需要收藏吗?
【问题讨论】:
标签: mongodb spring-data mongotemplate