No solía conectar dos colecciones para que workouts._id tuviera un valor asignado exercise.name .
primera colección "entrenamientos":
{ "_id": { "$oid": "60ffbd531b1cba41e8a7fde3" }, "id_user": { "$oid": "60fd50ee1e9d064a5cee0bec" }, "date": { "$date": "2021-05-20T22:00:00.000Z" }, "name": "wielki bicek", "workouts": [{ "_id": { "$oid": "60e07e588a2f1946f895475f" }, "parts": [{ "_id": { "$oid": "60ffbd531b1cba41e8a7fde5" }, "weight": "30", "repeating": "10" }] }, { "_id": { "$oid": "60e07e588a2f1946f895475f" }, "parts": [{ "_id": { "$oid": "60ffbd531b1cba41e8a7fde9" }, "weight": "30", "repeating": "10" }, { "_id": { "$oid": "60ffbd531b1cba41e8a7fdea" }, "weight": "30", "repeating": "10" }] }], "__v": 0 }segunda colección "ejercicios":
{ "_id": { "$oid": "60e07e588a2f1946f895475f" }, "name": "Wyciskanie sztangi", "image": "uploads\\2021-07-03T15-12-24.173Z-test.gif", "type": "force", "groupMuscle": { "$oid": "60daf099c1aaa20b4cfdf0fa" }, "instruction": "Opierając tułów znazewnątrz.", "__v": 0 }Tengo una colección en la que quiero ejecutar una agregación anidada, pero no sé cómo ejecutar esta operación.
$unwind relajarse entrenamientos$lookup ejercicios de búsqueda$addFileds obtener el primer elemento$addFileds obtiene solo el campo de nombre$project eliminar campo inútil$group grupo por id original db.workouts.aggregate([ { "$unwind": "$workouts" }, { "$lookup": { "from": "exercises", pipeline: [ { "$project": { name: 1 } } ], "localField": "workouts._id", "foreignField": "_id", "as": "names" } }, { "$addFields": { "workouts.i": { "$first": "$names" } } }, { "$addFields": { "workouts.name": "$workouts.i.name" } }, { "$project": { "names": 0, "workouts.i": 0 } }, { "$group": { "_id": { "_id": "$_id", "id_user": "$id_user", "date": "$date", "name": "$name" }, "workouts": { $push: "$workouts" } } } ])