sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo calculo un promedio ponderado en mongoDB utilizando el marco de agregación?

Para hacerlo, primero debe calcular el numerador (suma ponderada) y el denominador (suma de pesos) de la relación resultante. Después de eso, solo tendrás que dividir uno por otro:

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 obtener más información, consulte la documentación de Aggregation Pipeline .