Ordenación agregada de MongoDB
Es necesario tener suficiente conocimiento de las etapas de canalización de agregación para realizar operaciones de agregación utilizando MongoDB. Este tutorial explorará la etapa $sort
con un ejemplo para realizar la ordenación agregada de MongoDB.
Ordenación agregada de MongoDB
Tengamos un escenario para practicar los ejemplos de código. Tenemos una colección llamada student
que tiene información básica.
También puede utilizar las siguientes consultas para estar en la misma página con nosotros.
Código de ejemplo:
> db.createCollection('student');
> db.student.insertMany([
{"student_code": "ma001", "name": "Mehvish Ashiq", "postcode": 2000},
{"student_code": "tc002", "name": "Thomas Christopher", "postcode": 2001},
{"student_code": "km003", "name": "Krishna Mehta", "postcode": 2000},
{"student_code": "ar004", "name": "Aftab Raza", "postcode": 2000},
{"student_code": "za005", "name": "Zeenat Ashraf", "postcode": 2002},
{"student_code": "ka006", "name": "Kanwal Ali", "postcode": 2002}
]);
> db.student.find().pretty();
Producción :
{
"_id" : ObjectId("629afe5a0a3b0e96fe92e97b"),
"student_code" : "ma001",
"name" : "Mehvish Ashiq",
"postcode" : 2000
}
{
"_id" : ObjectId("629afe5a0a3b0e96fe92e97c"),
"student_code" : "tc002",
"name" : "Thomas Christopher",
"postcode" : 2001
}
{
"_id" : ObjectId("629afe5a0a3b0e96fe92e97d"),
"student_code" : "km003",
"name" : "Krishna Mehta",
"postcode" : 2000
}
{
"_id" : ObjectId("629afe5a0a3b0e96fe92e97e"),
"student_code" : "ar004",
"name" : "Aftab Raza",
"postcode" : 2000
}
{
"_id" : ObjectId("629afe5a0a3b0e96fe92e97f"),
"student_code" : "za005",
"name" : "Zeenat Ashraf",
"postcode" : 2002
}
{
"_id" : ObjectId("629afe5a0a3b0e96fe92e980"),
"student_code" : "ka006",
"name" : "Kanwal Ali",
"postcode" : 2002
}
A continuación, queremos determinar el postcode
que alberga el máximo número de alumnos pero de forma ordenada. Para ello, consulte el siguiente código de ejemplo.
Código de ejemplo:
> db.student.aggregate([
{ $group: { _id: '$postcode', students: { $sum: 1 } } },
{ $sort: {_id: 1} }
]);
Producción :
{ "_id" : 2000, "students" : 3 }
{ "_id" : 2001, "students" : 1 }
{ "_id" : 2002, "students" : 2 }
Aquí, estamos usando la función aggregate()
que calcula los valores agregados para los datos en la colección especificada o una vista. Dentro del método aggregate()
, agrupamos los documentos teniendo en cuenta el campo postcode
.
Además, devolvemos el postcode
como _id
, y los estudiantes cuentan en cada postcode
como students
. Aquí, usamos el $sum
para obtener el número de estudiantes para cada postcode
.
$sum
calcula y devuelve la suma colectiva del valor numérico ignorando los valores no numéricos.
Finalmente, usamos la etapa $sort
para clasificarlos según las necesidades del proyecto en orden ascendente o descendente. El 1
se usa para orden ascendente mientras que -1
se usa para orden descendente.