Provedli jste $unwind
dvakrát, takže potřebujete použít dva $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"
}
}
}
}
- První skupina – pro seskupení podřízených objektů. Ale Typ, Název a Záhlaví musí být nastaveno na rodičovské a podřízené pole.
- Druhá skupina – pro seskupení nadřazených objektů. Při seskupování dítěte získáme všechna samostatná pole. Tady to jen musíme nastavit ve správných pořadích.
Funguje Hřiště Mongo
Poznámka:Když používáte $lookup
, poskytne pole. Ale jsou místa, kde to prostě uděláte jako objekt. Nevím, jestli se připojujete k osobnímu vztahu nebo ne. Pokud ano, můžete použít poziční operátor v projekci
nebo arrayElemAt