För att göra det bör du först beräkna täljaren (vägd summa) och nämnaren (summan av vikter) för det resulterande förhållandet. Efter det behöver du bara dela den ena efter den andra:
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" ] }
}
})
För mer information se dokumentation för aggregation pipeline .