【问题标题】:How can you convert weighted average MongoDB Query into Spring Data Query?如何将加权平均 MongoDB 查询转换为 Spring Data Query?
【发布时间】:2019-12-17 18:02:34
【问题描述】:

我有以下聚合并希望将其用于我的 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 mongodb spring-data average aggregation


    【解决方案1】:

    以下是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);
    

    【讨论】:

      猜你喜欢
      • 2015-10-09
      • 2020-10-14
      • 1970-01-01
      • 2018-01-08
      • 2012-12-30
      • 2022-01-17
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      相关资源
      最近更新 更多