es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consulta de base de datos MongoDB (Mongoose)

Estoy tratando de obtener todos los documentos de una colección que tienen una cantidad variable de exámenes fallidos.

Mi colección es la siguiente:
Base de datos de estudiantes en mongoDB

Tengo que recuperar todos los estudiantes que, por ejemplo, tienen 3 puntajes inferiores a 10.

La consulta que estoy ejecutando actualmente es la siguiente:

Student.aggregate([
    {
        $project: {
            _id: 0,
            name: 1,
            students: {
                count: {
                    $size: {
                        $filter: {
                            input: "$results",
                            as: "result",
                            cond: {$lt: ["$$result.score", 10]}
                        }
                    }
                }
            }
        }
    }
])

¿Cómo puedo comprobar si el recuento es $gte y, por ejemplo, es 3?

Mi resultado actual:
Resultado de la consulta

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para verificar si el recuento es mayor o igual a 3, podemos agregar una etapa $match después de la etapa $project en la canalización de agregación. La etapa $match filtrará todos los documentos donde el campo count sea menor que 3.

    La consulta actualizada se vería así:

    Student.aggregate([
        {
            $project: {
                _id: 0,
                name: 1,
                students: {
                    count: {
                        $size: {
                            $filter: {
                                input: "$results",
                                as: "result",
                                cond: { $lt: ["$$result.score", 10] }
                            }
                        }
                    }
                }
            }
        },
        {
            $match: {
                "students.count": { $gte: 3 }
            }
        }
    ])
    

    La etapa $match utiliza el operador $gte para filtrar documentos donde el campo count es menor que 3. Esto devolverá todos los documentos donde el estudiante tiene al menos 3 puntuaciones inferiores a 10.

    La salida ahora solo debe incluir documentos donde el recuento sea mayor o igual a 3.

Comments are closed.