Để làm như vậy, trước tiên bạn nên tính tử số (tổng có trọng số) và mẫu số (tổng các trọng số) của tỷ lệ kết quả. Sau đó, bạn sẽ chỉ cần chia từng cái một:
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" ] }
}
})
Để biết thêm thông tin, hãy xem tài liệu Đường ống tổng hợp .