面试题答案
一键面试db.products.aggregate([
// 按类别分组
{
$group: {
_id: "$category",
maxPriceProduct: {
$max: "$price"
},
totalSalesVolume: {
$sum: "$salesVolume"
},
maxPriceProductSalesVolume: {
$sum: {
$cond: [
{ $eq: ["$price", { $max: "$price" }] },
"$salesVolume",
0
]
}
}
}
},
// 计算比例
{
$project: {
category: "$_id",
salesRatio: {
$divide: ["$maxPriceProductSalesVolume", "$totalSalesVolume"]
},
_id: 0
}
},
// 写入新集合
{
$out: "category_sales_ratio"
}
]);