gpt4 book ai didi

java - 如何将 Sum SQL 与 Spring Data MongoDB 一起使用?

转载 作者:行者123 更新时间:2023-12-02 13:19:19 26 4
gpt4 key购买 nike

我想对列 price.value 的值求和其中列 validatedAt介于startDate之间和endDate .
所以我想要一个BigInteger结果(总和值)。

这是我尝试过的:

        final List<AggregationOperation> aggregationOperations = new ArrayList<>();
aggregationOperations.add(Aggregation.match(where("validatedAt").gte(startDate).lt(endDate)));
aggregationOperations.add(Aggregation.group().sum("price.value").as("total"));

final Aggregation turnoverAggregation = Aggregation.newAggregation(OrderEntity.class, aggregationOperations);

return this.mongoOperations.aggregate(turnoverAggregation, OrderEntity.class, BigInteger.class).getUniqueMappedResult();

这行不通。我有这个错误:

{"exception":"com.application.CommonClient$Builder$6","path":"/api/stats/dashboard","message":"Failed to instantiate java.math.BigInteger using constructor NO_CONSTRUCTOR with arguments ","error":"Internal Server Error","timestamp":1493209463953,"status":500}

有什么帮助吗?

最佳答案

您不需要为此添加新的 pojo。当您要映射更多字段并且希望 spring 自动映射它们时,这会很有帮助。

解决该问题的正确方法是使用BasicDBObject,因为 MongoDB 将所有值存储为键值对。

return this.mongoOperations.aggregate(turnoverAggregation, OrderEntity.class, BasicDBObject.class).getUniqueMappedResult().getInt("total");

旁注:您应该使用 Double/BigDecimal 来表示货币值。

关于java - 如何将 Sum SQL 与 Spring Data MongoDB 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43631735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com