如何将加权平均 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);
我有以下聚合并想将其用于我的 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);