如何将加权平均 MongoDB 查询转换为 Spring 数据查询?

How can you convert weighted average MongoDB Query into Spring Data Query?

我有以下聚合并想将其用于我的 Spring-项目,我在其中使用 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数据mongodb聚合代码

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);