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

Come concatenare i risultati delle stringhe da più record MongoDB in un unico risultato in MongoDB?

Usa $group per ottenere un array da tutti i documenti e quindi $reduce con $concat per ottenere una stringa:

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

Dopo $group otterrai un unico documento che contiene un array di tutto il text i valori. Quindi $reduce "scansiona" l'array e concatena lo stato ($$value ) con l'elemento attualmente elaborato. Per il primo elemento lo stato sarà una stringa vuota, quindi sto usando $cond per evitare di avere spazi bianchi all'inizio.