El ejemplo consiste en una colección de documentos de cursos en el cual se recogen las calificaciones de asignaturas y debemos mostrar los documentos ordenados por la suma de todas las calificaciones por documento.
La estructura del documento es la siguiente:
{
nombre : "Daniel Romero",
Curso : "Probando MongoDB por HispaBigdata",
NotaAsignatura1 : 5.5,
NotaAsignatura2 : 6.4,
NotaAsignatura3 : 7.8
}
Aquí tenéis una serie de documentos con los que podéis hacer pruebas.
db.perfiles.insert({
nombre : "Daniel Romero",
Curso : "Probando MongoDB por HispaBigdata",
NotaAsignatura1 : 5.5,
NotaAsignatura2 : 6.4,
NotaAsignatura3 : 7.8
});
db.perfiles.insert({
nombre : "Alberto Hernandez",
Curso : "Probando CouchDB por HispaBigdata",
NotaAsignatura1 : 8.5,
NotaAsignatura2 : 5.3,
NotaAsignatura3 : 6.7
});
db.perfiles.insert({
nombre : "Natalia Miro",
Curso : "Probando MongoDB por HispaBigdata",
NotaAsignatura1 : 8.4,
NotaAsignatura2 : 3.5,
NotaAsignatura3 : 6.25
});
db.perfiles.insert({
nombre : "Manuel Rodriguez",
Curso : "Probando CouchDB por HispaBigdata",
NotaAsignatura1 : 5.4,
NotaAsignatura2 : 6.4,
NotaAsignatura3 : 8.2
});
Y ahora realizamos el aggregatión:db.perfiles.aggregate(
{$project: {nombre : "$nombre",
curso : "$curso",
NotaAsignatura1 : "$NotaAsignatura1",
NotaAsignatura2 : "$NotaAsignatura2",
NotaAsignatura3 : "$NotaAsignatura3",
sum : {$add : ["$NotaAsignatura1", "$NotaAsignatura2", "$NotaAsignatura1"]}}},
{$sort: {sum: -1}}
)
Como podeis observar vamos a proyectar todos los campos del documento y vamos a crear una variable llamada sum que contendrá la suma de todas las calificaciones, posteriormente vamos a ordenador de forma descendente por el valor de dicha variable.
Es un ejemplo sencillo el cual nos puede ser útil a la hora de trabajar con calificaciones.
No hay comentarios:
Publicar un comentario