Inte så säker på vad du vill göra med slutresultatet eftersom nycklarna och värdena är precis desamma. Icke desto mindre kan du använda aggregeringsramverket där du kan avnormalisera den inbäddade värdematrisen genom att använda $unwind
operator som plattar ut det, dvs den producerar en kopia av varje dokument per arraypost.
Efter att ha plattat ut värdematrisen kan du använda $group
ackumuleringsoperatörer på värdena för att aggregera dem. En sista pipeline av $project
operatorn skulle forma fälten från den tidigare grupperingen till önskat format.
Följ det här exemplet för att 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
}
}
])
Eftersom du använder Meteor lägger meteor till meteorhacks:aggregate
kommer att lägga till korrekt aggregeringsstöd för Meteor så att du kan köra ovanstående aggregeringspipeline på din samling.