Tengo una tarea para la escuela en la que tengo que recuperar una lista de estudiantes que tienen x cantidad de exámenes reprobados.
Un estudiante tiene un esquema como este un esquema de estudiante
Una prueba reprobada es cuando un estudiante tiene menos de 10 en un curso.
La cantidad aquí es la cantidad de fallas que proporciona la interfaz (la cantidad de fallas debe ser mayor que esta cantidad)
Esto es lo que tengo, pero obviamente no está funcionando. Simplemente no sé cómo verificar si el recuento de la cantidad de pruebas fallidas es mayor que 'cantidad'
let amount = 1 let students = await Student.aggregate([ { $group: { _id: '$studentNr', count: {"$sum": amount} } }, { $match: { count: { 'courses.score':{$lt: 10} } } } ]);gracias de antemano
RESPONDER
Gracias a Buzz Moschetti pude encontrar la respuesta correcta.
let amount = parseInt(req.body.amount); let students = await Student.aggregate([ { $project: { name: "$name", studentNr: "$studentNr", courses: { $filter: { input: "$courses", as: "course", cond: {$lt: ["$$course.score", 10]} } } } }, {$match: {$expr: {$gt: [{$size:'$courses'}, amount]}}} ]);Afortunadamente, su esquema tiene todos los cursos y puntajes para cada estudiante en una matriz. Entonces, lo que debe hacer no es $group (porque cada documento es una identificación de estudiante única), sino $filter en la matriz de courses y mantener solo aquellos con score inferior a 10. Después de eso, $match con el $size de la matriz filtrada es igual a amount . Ya que esto es tarea, lo dejaré ahí.