我試圖在聚合管道中合并一個陣列的物件。這里是MongoDB檔案。
{
"category" : [
{
"id" : ObjectId("60ed3d041436f1310401b1b2")。
"name" : "cat 1",
"服務" : [
{
"_id" : ObjectId("607ab64bc520c2587045694b")。
"name" : "service 1",
}
]
}
]
},
{
"category" : [
{
"id" : ObjectId("60ed3cff1436f1310401b1b1")。
"name" : "cat 2",
"服務" : [
{
"_id" : ObjectId("5ffd5d4bc4967a1b10bf5022")。
"name" : "service 2"。
}
]
},
{
"id" : ObjectId("60ed3cff1436f1310401b1b1")。
"name" : "cat 2",
"服務" : [
{
"_id" : ObjectId("6077e777ad481470d42c4e41")。
"name" : "Service 3"。
}
]
}
]
}
預期輸出category陣列合并成一個,并根據類別合并service陣列。
[
{
"id" : ObjectId("60ed3d041436f1310401b1b2")。
"name" : "cat 1",
"服務" : [
{
"_id" : ObjectId("607ab64bc520c2587045694b")。
"name" : "service 1",
}
]
},
{
"id" : ObjectId("60ed3cff1436f1310401b1b1")。
"name" : "cat 2",
"服務" : [
{
"_id" : ObjectId("5ffd5d4bc4967a1b10bf5022")。
"name" : "service 2"。
},
{
"_id" : ObjectId("6077e777ad481470d42c4e41")。
"name" : "Service 3"。
}
]
},
如何實作這個?
uj5u.com熱心網友回復:
試試這個:
db.collection.aggregate( [
{ $unwind: "$category"/span> },
{
$group: {
_id: {
_id: "$_id"/span>,
name: "$category.name".
},
services: { $push: { $first: "$category.services" } }
}
},
{
$project: {
_id: "$_id._id"/span>,
name: "$_id.name"。
services: 1.
}
}
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/324670.html
標籤:
