如何将加权平均MongoDB查询转换为Spring Data Query?



我有以下聚合,并希望将其用于我的Spring-Project,在那里我使用SpringData。 聚合如下所示:

db.collection.aggregate({
$group : {
_id : 'weighted average', 
numerator: {  $sum: { $multiply: [ "a", "b"] } },
denominator: { $sum: "a" }
}
}, {
$project: {
average: { $divide: [ "$numerator", "$denominator" ] }
}
})

总结一下:我想以分子的形式计算多次乘法的总和:例如 a1*b1 + a2*b2 + ....=? 作为分母,我想要一个所有 a 的总和,例如 a1+a2+a3+a4+...=? 然后我也想把分子和分母除。

提前谢谢你。

以下是 spring data mongdb 聚合代码

List<AggregationOperation> stages = new ArrayList<>();
Multiply multiplyOp = ArithmeticOperators
.valueOf("$a").multiplyBy("$b");
GroupOperation  groupOperation = group(Aggregation.fields("_id")).sum(multiplyOp).as("numerator").sum("a").as("denominator")
Divide divideOp = ArithmeticOperators.valueOf("$numerator")
.divideBy("$denominator");
ProjectOperation projectOperation = project().and(divideOp).as("average");
stages.add(groupOperation);
stages.add(projectOperation);
newAggregation(stages);

最新更新