如何动态求和 spring-data-mongodb 中的字段
how to dynamically sum fields in spring-data-mongodb
我是mongodb新手,有一些动态字段(var1, var2, var3 ... varN),变量名在HashMap中,字段是Double字段,如何汇总动态mongodb 中的字段?我尝试了以下代码片段:
ProjectionOperation operation = new ProjectionOperation ();
operation.andInclude((String[])map.values().toArray());
agg = newAggregation(operation,
group((String[])map.values().toArray()));
我无法输入动态字段的总和。有什么办法吗?
问候
克里斯
向 spring-data-mongodb 致敬。能够使用 spring-data-mongodb 编写合理的查询。希望它可能对其他人有用。
Aggregation agg2 = null;
GroupOperation t = null;
List<RenderReport> result=null;
Fields fields =Fields.fields(vars);//vars is as string array containing variable names var1, var2 and so on
t = group( fields().and("year") );
Iterator<org.springframework.data.mongodb.core.aggregation.Field> fieldIt=fields.iterator();
while(fieldIt.hasNext())
{
org.springframework.data.mongodb.core.aggregation.Field f = fieldIt.next();
t= t.sum(f.getName()).as(f.getName());
}
agg2 = newAggregation(
project( vars )
.andExpression("units * retailPrice").as("grossSales")
.andExpression("year(mydate)").as("year"),
t,
sort(Sort.Direction.ASC, "year")
);
AggregationResults<RenderReport> groupResults = mongoTemplate.aggregate(agg2,RenderReport.class,
RenderReport.class);
result = groupResults.getMappedResults();
问候
克里斯
我是mongodb新手,有一些动态字段(var1, var2, var3 ... varN),变量名在HashMap中,字段是Double字段,如何汇总动态mongodb 中的字段?我尝试了以下代码片段:
ProjectionOperation operation = new ProjectionOperation ();
operation.andInclude((String[])map.values().toArray());
agg = newAggregation(operation,
group((String[])map.values().toArray()));
我无法输入动态字段的总和。有什么办法吗?
问候
克里斯
向 spring-data-mongodb 致敬。能够使用 spring-data-mongodb 编写合理的查询。希望它可能对其他人有用。
Aggregation agg2 = null;
GroupOperation t = null;
List<RenderReport> result=null;
Fields fields =Fields.fields(vars);//vars is as string array containing variable names var1, var2 and so on
t = group( fields().and("year") );
Iterator<org.springframework.data.mongodb.core.aggregation.Field> fieldIt=fields.iterator();
while(fieldIt.hasNext())
{
org.springframework.data.mongodb.core.aggregation.Field f = fieldIt.next();
t= t.sum(f.getName()).as(f.getName());
}
agg2 = newAggregation(
project( vars )
.andExpression("units * retailPrice").as("grossSales")
.andExpression("year(mydate)").as("year"),
t,
sort(Sort.Direction.ASC, "year")
);
AggregationResults<RenderReport> groupResults = mongoTemplate.aggregate(agg2,RenderReport.class,
RenderReport.class);
result = groupResults.getMappedResults();
问候
克里斯