Non sono così sicuro di cosa vuoi fare con il risultato finale poiché le chiavi e i valori sono gli stessi. Tuttavia, è possibile utilizzare il framework di aggregazione in cui è possibile denormalizzare l'array di valori incorporati utilizzando il $unwind
operatore che lo appiattisce, ovvero produce una copia di ogni documento per ogni voce dell'array.
Dopo aver appiattito l'array dei valori, puoi applicare il $group
operatori di accumulazione sui valori per aggregarli. Una pipeline finale del $project
l'operatore modellerebbe i campi del raggruppamento precedente nel formato desiderato.
Segui questo esempio per ottenere il concetto:
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
}
}
])
Dato che stai usando Meteor, meteor add meteorhacks:aggregate
aggiungerà un adeguato supporto di aggregazione per Meteor in modo che tu possa eseguire la pipeline di aggregazione di cui sopra sulla tua raccolta.