MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come faccio a calcolare una media ponderata in mongoDB utilizzando il framework di aggregazione?

Per fare ciò dovresti prima calcolare il numeratore (somma ponderata) e il denominatore (somma dei pesi) del rapporto risultante. Dopodiché dovrai solo dividere uno per l'altro:

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" ] }
  }
})

Per ulteriori informazioni, vedere Documentazione della pipeline di aggregazione .