Vous ne savez pas trop ce que vous voulez faire avec le résultat final car les clés et les valeurs sont identiques. Néanmoins, vous pouvez utiliser le cadre d'agrégation où vous pouvez dénormaliser le tableau des valeurs intégrées en utilisant le $unwind
opérateur qui l'aplatit c'est-à-dire qu'il produit une copie de chaque document par entrée de tableau.
Après avoir aplati le tableau des valeurs, vous pouvez appliquer le $group
opérateurs d'accumulation sur les valeurs pour les agréger. Un pipeline final du $project
l'opérateur façonnerait les champs du regroupement précédent dans le format souhaité.
Suivez cet exemple pour obtenir le concept :
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
}
}
])
Puisque vous utilisez Meteor, meteor ajoute meteorhacks:aggregate
ajoutera un support d'agrégation approprié pour Meteor afin que vous puissiez exécuter le pipeline d'agrégation ci-dessus sur votre collection.