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