Skip to content

Instantly share code, notes, and snippets.

@elyse0
Created November 3, 2021 23:12
Show Gist options
  • Save elyse0/1ead2f7ffe6b73f6b9f71a70737f4da4 to your computer and use it in GitHub Desktop.
Save elyse0/1ead2f7ffe6b73f6b9f71a70737f4da4 to your computer and use it in GitHub Desktop.
use colegio
db.alumnos.aggregate([
{$unwind: "$evaluaciones"},
{$match: {ciudad: "QUERETARO"}},
{$group: {_id: {
claveAlu: "$clave_alu",
nombre: {$concat: ["$nombre", " ", "$ap_paterno", " ", "$ap_materno"]},
},
primeraCalif: {$first: "$evaluaciones.calificacion"},
ultimaCalif: {$last: "$evaluaciones.calificacion"},
maxCalif: {$max: "$evaluaciones.calificacion"},
minCalif: {$min: "$evaluaciones.calificacion"},
}
},
{$sort: {numeroAlumnos: -1}}
])
db.alumnos.aggregate([
{$match: {$and: [
{ciudad: "QUERETARO"},
{colonia: {$regex: "centro|marques", $options: "i"}},
{evaluaciones: {$exists: 1}}
]
}
},
{$addFields: {sumaCalif: {$sum: "$evaluaciones.calificacion"}}},
{$addFields: {promCalif: {$avg: "$evaluaciones.calificacion"}}},
{$addFields: {maxCalif: {$max: "$evaluaciones.calificacion"}}},
{$addFields: {minCalif: {$min: "$evaluaciones.calificacion"}}},
{$addFields: {primeraCalif: {$first: "$evaluaciones.calificacion"}}},
{$addFields: {ultimaCalif: {$last: "$evaluaciones.calificacion"}}},
{$match: {ciudad: "QUERETARO"}},
{$group: {
_id: "$colonia",
nAlumnos: {$sum: 1},
promedio: {$avg: "$promCalif"},
maxCalif: {$max: "$maxCalif"},
minCalif: {$min: "$minCalif"},
},
},
{$sort: {nAlumnos: -1}}
])
db.alumnos.aggregate([
{$match: {$and: [
{ciudad: "QUERETARO"},
{colonia: {$regex: "centro|marques", $options: "i"}},
{evaluaciones: {$exists: 1}}
]
}
},
{$addFields: {
sumaCalif: {$sum: "$evaluaciones.calificacion"},
promCalif: {$avg: "$evaluaciones.calificacion"},
maxCalif: {$max: "$evaluaciones.calificacion"},
minCalif: {$min: "$evaluaciones.calificacion"},
primeraCalif: {$first: "$evaluaciones.calificacion"},
ultimaCalif: {$last: "$evaluaciones.calificacion"},
}
},
{$addFields: {
totalesCalif: {$add: [
"$promCalif",
"$maxCalif",
"$minCalif",
"$primeraCalif",
"$ultimaCalif",
]
}
}
},
{$group: {
_id: {
claveAlu: "$clave_alu",
nombre: {$concat: ["$nombre", " ", "$ap_paterno", " ", "$ap_materno"]},
},
valores: {$push: {
sumaCalif: "$sumaCalif",
promCalif: "$promCalif",
maxCalif: "$maxCalif",
minCalif: "$minCalif",
primeraCalif: "$primeraCalif",
ultimaCalif: "$ultimaCalif",
totales: "$totalesCalif"
}
}
}
},
{$project: {
_id: 0,
matricula: "$_id.claveAlu",
alumno: "$_id.nombre",
valores: "$valores"
}
}
])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment