MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Conversione dell'array mongo in oggetto con coppia chiave-valore

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.