Tengo el siguiente modelo donde almaceno una referencia a otro documento dentro de una matriz de otro modelo:
const ProgramExecutionSchema = new Schema({ user: { type: Schema.Types.ObjectId, ref: "User", required: true }, executions: [ { programId: { type: Schema.Types.ObjectId, ref: "Program.program", required: true, }, date: { type: Date, required: true }, executionRate: { type: Number, required: true, min: 0, max: 100 }, grade: { type: Number, required: true, default: 0, min: 0, max: 10 }, }, ], });y este es el modelo al que se refiere (quiero completar un programa específico dentro de la matriz del programa):
const ProgramSchema = new Schema({ user: { type: Schema.Types.ObjectId, ref: "User", required: true }, program: [ { day: { type: String, required: true, enum: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ], }, restDay: { type: Boolean }, workout: { type: Schema.Types.ObjectId, ref: "Workout" }, }, ], });Al intentar completar el campo 'programId', simplemente lo ignora. Pero el _id que almaceno dentro del modelo 'ProgramExecution' es correcto. Así que no estoy seguro si estoy usando la consulta correcta para la población. esto es lo que probé:
const programExecutions = await ProgramExecution.findOne({ user: userId, }).populate({ path: 'executions', populate: { path: 'programId', model: 'Program', }, });