MST

星途 面试题库

面试题:MongoDB复杂分组与投射下的数据聚合实现

给定一个MongoDB集合,文档包含字段 "product": "产品A", "category": "电子产品", "price": 100, "quantity": 5, "timestamp": ISODate("2023 - 10 - 01T10:00:00Z") 。需要按照产品类别分组,计算每个类别在不同月份的总销售额(销售额 = 价格 * 数量),并且只显示总销售额大于1000的类别及对应月份的销售额数据,写出完整的聚合管道操作。
23.3万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
[
    {
        // 按类别和月份分组
        $group: {
            _id: {
                category: "$category",
                month: { $month: "$timestamp" }
            },
            totalSales: {
                $sum: { $multiply: ["$price", "$quantity"] }
            }
        }
    },
    {
        // 过滤总销售额大于1000的数据
        $match: {
            totalSales: { $gt: 1000 }
        }
    },
    {
        // 重新格式化输出结果
        $project: {
            _id: 0,
            category: "$_id.category",
            month: "$_id.month",
            totalSales: 1
        }
    }
]