MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Convertendo array mongo em objeto com par chave-valor


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.