sql >> Base de Datos >  >> NoSQL >> MongoDB

Conversión de matriz mongo en objeto con par clave-valor

No estoy tan seguro de lo que quiere hacer con el resultado final, ya que las claves y los valores son los mismos. No obstante, puede usar el marco de agregación donde puede desnormalizar la matriz de valores incrustados usando $unwind operador que lo aplana, es decir, produce una copia de cada documento por entrada de matriz.

Después de aplanar la matriz de valores, puede aplicar $group operadores de acumulación sobre los valores para agregarlos. Una canalización final del $project El operador daría forma a los campos de la agrupación anterior en el formato deseado.

Siga este ejemplo para obtener el concepto:

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
        }
    }
])

Ya que está usando Meteor, agregue meteor meteorhacks:aggregate agregará soporte de agregación adecuado para Meteor para que pueda ejecutar la canalización de agregación anterior en su colección.