¿Hay alguna forma de duplicar un documento durante la agregación en mongo? Por ejemplo, tengo un esquema de "Persona" que se ve así:
Persona:
{ _id: ObjectId, fullName: string, matches: number } Quiero hacer una agregación que devuelva todas las personas y duplique el documento de cada persona por el número de sus matches .
por ejemplo para esta colección:
[{ _id: 1, fullName: "John Doe", matches: 1 }, { _id: 2, fullName: "Bla Bla", matches: 2 }]El resultado será:
[{ _id: 1, fullName: "John Doe", matches: 1 }, { _id: 2, fullName: "Bla Bla", matches: 2 }, { _id: 2, fullName: "Bla Bla", matches: 2 }]Sé que puedo agregar campos a los documentos durante la agregación, pero no encontré nada sobre cómo agregar documentos.
0 y termina en el número de matches , devolverá una matriz del documento raíz actualmatchesmatches con el objeto a la raíz db.collection.aggregate([ { $project: { matches: { $map: { input: { $range: [0, "$matches"] }, in: "$$ROOT" } } } }, { $unwind: "$matches" }, { $replaceRoot: { newRoot: "$matches" } } ])