Ikke så sikker på, hvad du vil gøre med slutresultatet, da nøglerne og værdierne er de samme. Ikke desto mindre kan du bruge aggregeringsrammen, hvor du kan denormalisere det indlejrede værdiarray ved at bruge $unwind
operatør, som flader det ud, dvs. det producerer en kopi af hvert dokument pr. matrixindgang.
Efter at have udjævnet værdimatrixen, kan du anvende $group
akkumuleringsoperatører på værdierne for at aggregere dem. En sidste pipeline af $project
operatør ville forme felterne fra den forrige gruppering til det ønskede format.
Følg dette eksempel for at få konceptet:
templateAttributes.aggregate([
{ "$match": { "platform": "V1" } },
{ "$unwind": "$available.Community.attributes.type.values" },
{
"$group": {
"_id": "$available.Community.attributes.type.values",
"value": { "$first": "$available.Community.attributes.type.values" }
}
},
{
"$project": {
"_id": 0,
"label": "$_id",
"value": 1
}
}
])
Da du bruger Meteor, skal du tilføje meteorhacks:aggregate
vil tilføje korrekt aggregeringsunderstøttelse til Meteor, så du kan køre ovenstående aggregeringspipeline på din samling.