Não tenho certeza do que você quer fazer com o resultado final, pois as chaves e os valores são exatamente os mesmos. No entanto, você pode usar a estrutura de agregação onde você pode desnormalizar a matriz de valores incorporados usando o
$unwind
operador que o nivela, ou seja, produz uma cópia de cada documento por entrada de matriz. Depois de nivelar a matriz de valores, você pode aplicar o
$group
operadores de acumulação sobre os valores para agregá-los. Um pipeline final do $project
operador moldaria os campos do agrupamento anterior no formato desejado. Siga este exemplo para obter o conceito:
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
}
}
])
Como você está usando o Meteor, adicione meteor
meteorhacks:aggregate
adicionará suporte de agregação adequado para Meteor para que você possa executar o pipeline de agregação acima em sua coleção.