Tengo una matriz de objetos donde quiero hacer una cadena que concatene todos los mismos atributos de la matriz. Ejemplo:
{ _id: 123, example_document: true, people: [ { name: "John", age: 18 }, { name: "Clint", age: 20 } ] }Y quiero hacer una consulta donde sería mi resultado:
{ _id: 123, example_document: true, people: [ { name: "John", age: 18 }, { name: "Clint", age: 20 } ], concat_names: "John, Clint" }Creo que agregar es el camino que debo tomar, pero no puedo encontrar una manera de obtener una cadena de esto, solo concatenar elementos de matriz en otra matriz. ¿Alguien podría ayudar?
Puede usar $concat combinado con $reduce para lograr esto, así:
db.collection.aggregate([ { $addFields: { concat_names: { $reduce: { input: "$people", initialValue: "", in: { $concat: [ "$$value", { $cond: [ { $eq: [ { "$strLenCP": "$$value" }, 0 ] }, "", ", " ] }, "$$this.name" ] } } } } } ])