MST

星途 面试题库

面试题:MongoDB中first与last累加器函数在简单数据分析场景的应用

假设有一个MongoDB集合,存储了某电商平台每日商品销售记录,文档结构包含日期(date)、商品ID(productId)、销售数量(quantity)。要求使用聚合框架,结合first与last累加器函数,计算每个商品从开始销售到最近一次销售的总销售数量,简要描述聚合步骤并写出相应代码。
15.6万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 聚合步骤描述
    • 步骤一:按productId分组:将所有文档按商品ID进行分组,以便后续对每个商品分别进行计算。
    • 步骤二:使用firstlast累加器函数:在分组后,通过first函数获取该商品最早销售记录中的销售数量,通过last函数获取该商品最近销售记录中的销售数量。因为这里只需要最早和最晚的销售记录来计算总销售数量,所以这种方式较为简便。
    • 步骤三:计算总销售数量:将最早和最晚销售记录的销售数量相加,得到每个商品从开始销售到最近一次销售的总销售数量。
  2. 代码如下
db.sales.aggregate([
    {
        $group: {
            _id: "$productId",
            totalQuantity: {
                $add: [
                    { $first: "$quantity" },
                    { $last: "$quantity" }
                ]
            }
        }
    }
]);

上述代码中,假设集合名称为sales$group阶段按productId进行分组,在totalQuantity字段中,通过$add操作符将$first$last获取的销售数量相加,得到每个商品的总销售数量。