Bạn đã thực hiện xong $unwind
hai lần, Vì vậy, bạn cần sử dụng hai $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"
}
}
}
}
- Nhóm đầu tiên - để nhóm các đối tượng con. Nhưng Loại, Tên và Tiêu đề cần được đặt thành mảng mẹ và con tương ứng.
- Nhóm thứ hai - để nhóm các đối tượng chính. Chúng tôi nhận được mọi trường độc lập trong khi nhóm con. Ở đây, chúng ta chỉ cần thiết lập nó theo đúng trình quản lý.
Làm việc Sân chơi Mongo
Lưu ý:Khi bạn sử dụng $lookup
, nó sẽ cung cấp một mảng. Nhưng có một số nơi bạn chỉ làm cho nó như một đối tượng. Tôi không biết liệu bạn có tham gia vào mối quan hệ 1-1 hay không. Nếu vậy, bạn có thể sử dụng toán tử vị trí trong phép chiếu
hoặc arrayElemAt