Funciones de Agregación en MongoDB

Funciones de Agregación en MongoDB

$lookup, $match, $project, $replaceRoot, $sort

https://www.youtube.com/watch?v=25Ofy6G-zFQ

Colecciones Grupos


// Grupos
db.getCollection('grupos').find({});
db.grupos.deleteMany({});
db.grupos.insertMany([
  {
    '_id': 1.0, nombreg: 'ITICS', carrera: 'Ingenieria TIC'
  },
  {
    '_id': 2.0, nombreg: 'ITIC82', carrera: 'Ingenieria TIC'
  },
  {
    '_id': 3.0, nombreg: 'RT 51', carrera: 'Redes'
  }
]);

Colecciones Alumnos

db.getCollection('alumnos').find({});
db.alumnos.deleteMany({});
db.alumnos.insertMany([
  {'_id': 1.0, matricula: '126', nombre: 'Paty', app: 'Lpz', sexo: 'F', idg: 1, edad:20}, 
  {'_id': 2.0, matricula: '545', nombre: 'Joel', app: 'Mdz', sexo: 'M', idg: 1, edad:25}, 
  {'_id': 3.0, matricula: '654', nombre: 'Fernando', app: 'Rmz', sexo: 'M', idg: 2, edad:25}, 
  {'_id': 4.0, matricula: '734', nombre: 'Laura', app: 'Hdz', sexo: 'F', idg: 2, edad:25}, 
  {'_id': 5.0, matricula: '984', nombre: 'Memo', app: 'Trs', sexo: 'M', idg: 3, edad:30}, 
  {'_id': 6.0, matricula: '404', nombre: 'Karla', app: 'Lpz', sexo: 'F', idg: 3, edad:23}
]);

Función aggregate() en MongoDB

La función aggregate() es el mecanismo principal de MongoDB para realizar consultas avanzadas y transformaciones de datos sobre una o varias colecciones.

Permite construir una tubería de etapas (pipeline) donde cada etapa aplica una operación específica:

$lookup Unión de Colecciones

  • Une documentos de alumnos con grupos
  • Campos comunes localField: idgforeignField: _id
  • Resultado: Los alumnos con la información de su grupo
db.alumnos.aggregate([
  {$lookup: {
    from: "grupos",
    localField: "idg",
    foreignField: "_id",
    as: "grupo"
  }}
]);

$match: Filtrado de documentos

  • Similar a WHERE en SQL
{ $match: { sexo: "M", 'grupo.carrera': 'Ingenieria TIC' } }

$project

  • Incluye/excluye campos
  • Renombra
  • Calcula nuevos valores
    {$project: {
      _id: 0,
      matricula: 1,
      nombre_completo: { $concat: ["$nombre", " ", "$app"] }, 
      edad: 1,
      sexo: 1,
      carrera: '$grupo.carrera',
    }}
    

$replaceRoot

  • Aplana estructuras
  • Muy útil después de $lookup
  • Permite combinar el documento actual y uno interno
{$replaceRoot: {
  newRoot: {
    $mergeObjects: [
      {$arrayElemAt: ["$grupo", 0] },
      "$$ROOT"
    ]
  }}
}

Resumen y $sort Ordenamiento

Orden ascendente (1) o descendente (-1)

  {$match: {
      edad: {$gte: 25},
      carrera: 'Ingenieria TIC'
  }},
  {$sort: { nombre: -1 }},
  {$project: {
    _id: 0,
    matricula: 1,
    edad: 1,
    nombre: {
      $concat: ["$nombre", " ", "$app"]
    }, 
    carrera: 1,
    nombreg: 1,
  }}

About Author

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *