MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Conversion d'un tableau mongo en objet avec une paire clé-valeur

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.