Java Mongo两个字符串的聚合和
我试图对Mongo中的一个字段求和。如果它是一个整数,则没有问题,但问题是它是字符串,我得到0表示totalAmountJava Mongo两个字符串的聚合和,java,spring,mongodb,spring-data,Java,Spring,Mongodb,Spring Data,我试图对Mongo中的一个字段求和。如果它是一个整数,则没有问题,但问题是它是字符串,我得到0表示totalAmount private Integer findRequestAmount(String agentId, String status, Date date, String amountField) { Aggregation aggregationAmount = Aggregation.newAggregation( Aggrega
private Integer findRequestAmount(String agentId, String status, Date date, String amountField) {
Aggregation aggregationAmount = Aggregation.newAggregation(
Aggregation.match(
Criteria.where("rawRequest.agentId").is(agentId)
.and("status").is(status)
.and("dateCreated").gte(date)),
Aggregation.group("rawRequest.agentId")
.sum(amountField).as("amount"),
Aggregation.project().andExclude("_id"));
HashMap results = mongoTemplate
.aggregate(aggregationAmount, "underwritingRequest", HashMap.class)
.getUniqueMappedResult();
return results == null ? 0 : (Integer)results.get("totalAmount");
}
amountField是一个字符串,在这个实现中如何求和。您只需在聚合上使用
int x=Integer.parseInt
并在聚合内部使用它,即可将此字符串转换为整数。您将获得字符串数量字段
。您只需在聚合上使用int x=Integer.parseInt
并在聚合中使用它,即可将此字符串转换为整数。amountField是mongoDb中字段的字符串引用,看起来像rawRequest.amount。如果Mongo中的字段本身是整数,则此代码有效,但在我的情况下,此字段是字符串。那么,为什么不使用$toInt
管道将mongodb字符串字段转换为Int以获得总和。我将研究如何在聚合语句中使用此字段,看起来这是一种方法当然,您可以,为了方便起见,也请参考此内容。调查之后,我发现我可以在mongo逻辑中执行此操作,但对于spring数据,我仍然无法找到解决方案amountField是mongoDb中字段的字符串引用,看起来像rawRequest.amount。如果Mongo中的字段本身是整数,则此代码有效,但在我的情况下,此字段是字符串。那么,为什么不使用$toInt
管道将mongodb字符串字段转换为Int以获得总和。我将研究如何在聚合语句中使用此字段,看起来这是一种方法当然,您可以,也请参考这一点,以便于您的理解在调查之后,我发现我可以在mongo逻辑中实现这一点,但对于spring数据,我仍然无法找到解决方案