想知道如何使用聚合管道将procedures
个数组按type
就地分组.
因此,将这个转变为:
[
{
"airport": "MSP",
"country": "USA",
"procedures": [
{
"name": "ABC1",
"type": "DEP"
},
{
"name": "JKL2",
"type": "ARR"
},
{
"name": "LMN3",
"type": "DEP"
},
{
"name": "PQR4",
"type": "ARR"
}
]
},
{
"airport": "CMH",
"country": "USA",
"procedures": [
{
"name": "GHI4",
"type": "ARR"
},
{
"name": "RST3",
"type": "ARR"
},
{
"name": "TUV7",
"type": "DEP"
},
{
"name": "XYZ4",
"type": "ARR"
}
]
}
]
进入这一阶段:
[
{
"airport": "MSP",
"country": "USA",
"procedures": {
"ARR": [
{
"name": "JKL2",
"type": "ARR"
},
{
"name": "PQR4",
"type": "ARR"
}
],
"DEP": [
{
"name": "ABC1",
"type": "DEP"
},
{
"name": "LMN3",
"type": "DEP"
},
]
}
},
{
"airport": "CMH",
"country": "USA",
"procedures": {
"ARR": [
{
"name": "GHI4",
"type": "ARR"
},
{
"name": "RST3",
"type": "ARR"
},
{
"name": "XYZ4",
"type": "ARR"
}
],
"DEP": [
{
"name": "TUV7",
"type": "DEP"
}
]
}
}
]
我已经走到了
db.collection.aggregate([
{
"$unwind": "$procedures"
},
{
"$group": {
_id: "$procedures.type",
procedures: {
$push: "$procedures"
}
}
}
])
但它丢失了airport
个 struct ,并将数据混合在一起:
[
{
"_id": "DEP",
"procedures": [
{
"name": "ABC1",
"type": "DEP"
},
{
"name": "LMN3",
"type": "DEP"
},
{
"name": "TUV7",
"type": "DEP"
}
]
},
{
"_id": "ARR",
"procedures": [
{
"name": "JKL2",
"type": "ARR"
},
{
"name": "PQR4",
"type": "ARR"
},
{
"name": "GHI4",
"type": "ARR"
},
{
"name": "RST3",
"type": "ARR"
},
{
"name": "XYZ4",
"type": "ARR"
}
]
}
]