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

¿Cómo concatenar resultados de cadena de múltiples registros de MongoDB en un solo resultado en MongoDB?

Utilice $group para obtener una matriz de todos los documentos y luego $reduce con $concat para obtener una cadena:

db.col.aggregate([
    {
        $group: {
            _id: null,
            text: { $push: "$text" }
        }
    },
    {
        $project: {
            text: {
                $reduce: {
                    input: "$text",
                    initialValue: "",
                    in: {
                        $cond: [ { "$eq": [ "$$value", "" ] }, "$$this", { $concat: [ "$$value", " ", "$$this" ] } ]
                    }
                }
            }
        }
    }
])

Después de $group obtendrá un único documento que contiene una matriz de todos los text valores. Entonces $reduce "escanea" la matriz y concatena el estado ($$value ) con el artículo actualmente procesado. Para el primer elemento, el estado será una cadena vacía, así que estoy usando $cond para evitar tener espacios en blanco al principio.