假设 MongoDB 中有 3 个假设的集合:customers
, orders
, and orderItems
.
每个客户有多个订单,每个订单有多个订单项目。
以下是这 3 个集合的一些示例数据:
顾客
[
{
customer_id: 1,
name: "Jim Smith",
email: "[email protected]"
},
{
customer_id: 2,
name: "Bob Jones",
email: "[email protected]"
}
]
orders
[
{
order_id: 1,
customer_id: 1
},
{
order_id: 2,
customer_id: 1
}
]
订单项目
[
{
order_item_id: 1,
name: "Foo",
price: 4.99,
order_id: 1
},
{
order_item_id: 2,
name: "Bar",
price: 17.99,
order_id: 1
},
{
order_item_id: 3,
name: "baz",
price: 24.99,
order_id: 2
}
]
期望的结果
如何编写聚合管道以使返回的结果看起来像这样?
[
{
customer_id: 1,
name: "Jim Smith",
email: "[email protected]"
orders: [
{
order_id: 1,
items: [
{
name: "Foo",
price: 4.99
},
{
name: "Bar",
price: 17.99
}
]
},
{
order_id: 2,
items: [
{
name: "baz",
price: 24.99
}
]
}
]
},
{
customer_id: 2,
name: "Bob Jones",
email: "[email protected]"
orders: []
}
]