Anda telah melakukan $unwind
dua kali, Jadi Anda perlu menggunakan dua $group
.
{
$group: {
_id: {
secId: "$_id",
fId: "$Sections.id"
},
Type: {
$first: "$Type"
},
Name: {
$first: "$Name"
},
Header: {
$first: "$Sections.Header"
},
fieldItems: {
$push: "$Sections.FieldItems"
}
}
},
{
$group: {
_id: "$_id.secId",
Type: {
$first: "$Type"
},
Name: {
$first: "$Name"
},
Sections: {
$push: {
id: "$_id.fId",
Header: "$Header",
fieldItems: "$fieldItems"
}
}
}
}
- Grup pertama - untuk mengelompokkan objek anak. Tapi Jenis,Nama dan Header perlu disetel ke array induk dan anak masing-masing.
- Grup kedua - untuk mengelompokkan objek induk. Kami mendapatkan setiap bidang mandiri saat mengelompokkan anak. Di sini kita hanya perlu mengaturnya dalam urutan yang benar.
Bekerja Taman bermain Mongo
Catatan :Saat Anda menggunakan $lookup
, itu akan memberikan sebuah array. Namun ada beberapa tempat yang Anda jadikan objek saja. Saya tidak tahu apakah Anda bergabung dalam hubungan satu-ke-satu atau tidak. Jika demikian, Anda dapat menggunakan operator posisional dalam proyeksi
atau arrayElemAt