MST

星途 面试题库

面试题:MongoDB Shell客户端功能之聚合操作

假设在MongoDB中有一个存储销售记录的集合,每条记录包含产品名称、销售数量、销售价格等字段。使用MongoDB Shell客户端的聚合功能,计算每种产品的总销售额,并按照总销售额从高到低排序,仅返回总销售额前5的产品信息。请详细写出聚合管道的步骤及代码,并说明每个阶段的作用。
20.5万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 聚合管道步骤及代码
db.sales.aggregate([
    // 阶段1:分组
    {
        $group: {
            _id: "$productName",
            totalRevenue: { $sum: { $multiply: ["$quantity", "$price"] } }
        }
    },
    // 阶段2:排序
    {
        $sort: {
            totalRevenue: -1
        }
    },
    // 阶段3:限制返回结果数量
    {
        $limit: 5
    }
]);
  1. 每个阶段作用
    • $group阶段
      • _id: "$productName":按照产品名称进行分组。
      • totalRevenue: { $sum: { $multiply: ["$quantity", "$price"] } }:计算每组(每种产品)的总销售额,通过$multiply将销售数量$quantity和销售价格$price相乘,再使用$sum对每组的乘积进行求和。
    • $sort阶段
      • totalRevenue: -1:按照总销售额totalRevenue从高到低排序,-1表示降序。
    • $limit阶段
      • $limit: 5:限制返回结果只包含总销售额前5的产品信息。