【发布时间】:2019-06-09 19:49:38
【问题描述】:
综合展开后给出以下数据:
let workOrders = [
{customer: 'A', job: 'Apple', chemical: {name: 'Chem A', quantity: 500}},
{customer: 'A', job: 'Banana', chemical: {name: 'Chem B', quantity: 400}},
{customer: 'A', job: 'Banana', chemical: {name: 'Chem C', quantity: 300}},
{customer: 'B', job: 'Cherry', chemical: {name: 'Chem A', quantity: 200}}
]
需要输出:
[
{
customer: 'A',
jobs: [
{
job: 'Apple',
chemicals: [
{name: 'Chem A', quantity: 500}
]
},
{
job: 'Banana',
chemicals: [
{name: 'Chem B', quantity: 400},
{name: 'Chem C', quantity: 300}
]
}
]
},
{
customer: 'B',
jobs: [
{
job: 'Cherry',
chemicals: [
{name: 'Chem A', quantity: 200}
]
}
]
}
]
我了解如何使用 group 并首先按客户分组,但是我不明白如何在不弄乱初始客户组的情况下制作嵌套化学品数组。
我试过这样的东西,但它不喜欢内部的 $push。
{
"$group": {
"_id": "$customer",
"groups": {
$push: {
"group_data": "$customer",
"group_count": {$sum: "$customer"},
"group_child": {
$push: {
"group_data": "$job",
"group_count": {$sum: "$job"},
"group_children": {
$push: {
"group_data": "$chemical.name",
"group_count": {$sum: "$chemical.name"}
}
}
}
}
}
}
}
还想添加每个客户和每个工作的总数量
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework