MST

星途 面试题库

面试题:MongoDB聚合管道复杂查询之分组统计

假设有一个名为'sales'的集合,文档结构包含'product'(产品名称),'quantity'(销售数量)和'date'(销售日期)字段。请使用聚合管道统计每个产品的总销售数量,并按照总销售数量降序排列。
50.1万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

在MongoDB中,你可以使用以下聚合管道来解决这个问题:

db.sales.aggregate([
    {
        $group: {
            _id: "$product",
            totalQuantity: { $sum: "$quantity" }
        }
    },
    {
        $sort: {
            totalQuantity: -1
        }
    }
]);
  1. $group阶段
    • _id: "$product":按product字段对文档进行分组。
    • totalQuantity: { $sum: "$quantity" }:计算每个产品的销售总量。
  2. $sort阶段
    • totalQuantity: -1:按totalQuantity字段降序排列。

在其他数据库(如SQL)中,假设表名为sales,有productquantitydate字段,查询如下:

SELECT product, SUM(quantity) AS totalQuantity
FROM sales
GROUP BY product
ORDER BY totalQuantity DESC;
  1. SELECT语句
    • product:选择产品名称。
    • SUM(quantity) AS totalQuantity:计算每个产品的销售总量并命名为totalQuantity
  2. GROUP BY子句:按product字段分组。
  3. ORDER BY子句:按totalQuantity字段降序排列。