MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como calculo uma média ponderada no mongoDB usando a estrutura de agregação?


Para fazer isso você deve primeiro calcular o numerador (soma ponderada) e denominador (soma dos pesos) da razão resultante. Depois disso, você só precisará dividir um pelo outro:
db.collection.aggregate({
  $group : {
     _id : 'weighted average', // build any group key ypo need
     numerator: { $sum: { $multiply: [ "$price", "$quantity" ] } },
     denominator: { $sum: "$quantity" }
  }
}, {
  $project: {
    average: { $divide: [ "$numerator", "$denominator" ] }
  }
})

Para obter mais informações, consulte a Documentação do pipeline de agregação .