Hai fatto $unwind
due volte, quindi devi usare due $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"
}
}
}
}
- Primo gruppo - per raggruppare oggetti figlio. Ma Tipo, Nome e Intestazione devono essere impostati rispettivamente sull'array padre e figlio.
- Secondo gruppo - per raggruppare gli oggetti principali. Otteniamo tutti i campi autonomi durante il raggruppamento di bambini. Qui dobbiamo solo impostarlo negli ordini corretti.
parco giochi Mongo funzionante
Nota:quando usi $lookup
, fornirà un array. Ma ci sono alcuni posti in cui lo fai semplicemente come oggetto. Non so se ti unisci a una relazione uno-a-uno o meno. In tal caso, puoi utilizzare operatore posizionale in proiezione
o arrayElemAt