MST
星途 面试题库

面试题:MongoDB聚合框架下数组表达式实现复杂条件的分组

有一个集合,文档格式为:{ _id: ObjectId('64a9f85762967d9b98a2c977'), products: [ { category: 'electronics', price: 100 }, { category: 'clothing', price: 50 }, { category: 'electronics', price: 150 } ] }。请通过聚合框架和数组表达式,按category分组,并计算每个分组下products数组中所有产品价格的总和。
13.6万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

在MongoDB中,你可以使用如下聚合管道来实现按category分组并计算每个分组下products数组中所有产品价格的总和:

db.collection.aggregate([
    {
        $unwind: "$products"
    },
    {
        $group: {
            _id: "$products.category",
            totalPrice: { $sum: "$products.price" }
        }
    }
]);
  1. $unwind阶段
    • $unwind操作符将products数组展开,使每个数组元素成为一个独立的文档。这样,后续就可以对每个产品文档进行操作。
  2. $group阶段
    • _id字段根据products.category进行分组。
    • totalPrice字段使用$sum累加器来计算每个分组下products.price的总和。

这样,聚合操作会按category分组,并计算出每个分组下产品价格的总和。