Stort set her, $project
er afhængig af den "absolutte vej" til feltegenskaben i dokumentet på "højre side". Genveje såsom 1
er kun for, hvor dette element faktisk er det øverste niveau af dokumentet.
Du skal også være i stand til at beholde felter, når du $first
og $addToSet
eller $push
for at beholde den information, du henter fra det indre array. Og du skal $unwind
dobbelt her, da du kombinerer "typer" på tværs af dokumenter, og du ikke kun ønsker $first
i dette tilfælde.
OrderModel.aggregate([
{ "$unwind": "$products" },
{ "$unwind": "$products.types" },
{ "$group": {
"_id": "$products.name",
"active": { "$first": "$products.active" },
"types": { "$addToSet": "$products.types" },
"quantity": { "$sum": 1 }
}},
{ "$project": {
"_id": 0,
"name": "$_id",
"active": 1,
"types": 1,
"quantity": 1
}}
],function(err,results) {
});