面试题答案
一键面试在MongoDB中,可以使用如下聚合管道操作来实现:
[
{
"$lookup": {
"from": "集合B",
"localField": "_id",
"foreignField": "user_id",
"as": "orders"
}
},
{
"$addFields": {
"total_order_amount": {
"$sum": "$orders.order_amount"
}
}
},
{
"$project": {
"orders": 0
}
}
]
- $lookup阶段:
from
指定要关联的集合为“集合B”。localField
是集合A中的字段_id
。foreignField
是集合B中的字段user_id
。as
将关联后的结果数组命名为orders
,添加到集合A的每个文档中。
- $addFields阶段:
- 使用
$sum
操作符计算orders
数组中所有order_amount
的总和,并将结果命名为total_order_amount
。
- 使用
- $project阶段:
- 通过设置
orders: 0
,不显示orders
数组,只保留用户信息和计算出的订单总金额。
- 通过设置
请根据实际的集合名称替换上述代码中的“集合A”和“集合B”。