Documento de Universidad sobre Consideraciones importantes y operaciones en MongoDB. El Pdf aborda la estructura de documentos, gestión de arrays y uso de pipelines de agregación, con ejemplos de código para inserción, actualización y manipulación de datos en Informática.
Ver más12 páginas


Visualiza gratis el PDF completo
Regístrate para acceder al documento completo y transformarlo con la IA.
Algunas consideraciones importantes en Mongodb
> db.amigos. find() _id: ObjectId('661fe75e9eec717357cefa5a'), Nombre: 'Elena', Apellidos: 'García', Edad: 18, Aficiones: [ 'ballet' , 'padel', 'lectura', 'bailar' ], Amigos: [ { Nombre: 'Monica', Edad: 20 1 db.amigos.updateOne({Nombre:"Elena"}, {$push: {Aficiones: "gym"}}) > db.amigos. find() _id: ObjectId('661fe75e9eec717357cefa5a'), Nombre: 'Elena' , Apellidos: 'García', Edad: 18, Aficiones: [ 'ballet', 'padel ', 'lectura' , 'bailar', ' gym ], Amigos: [ Nombre: 'Monica', Edad: 20 1
Y Los documentos y las consultas pueden tener código JavaScript
2v La función sort() se encadena a la llamada find() y ordena los resultados. Por ejemplo, para ordenar los resultados en orden ascendente de «nombre» y en orden descendente de «edad» se haría de la siguiente manera: db.autores.find().sort({nombre: 1, edad: - 1})
Ejemplo: supongamos que tenemos la base de datos escuela en mongodb, y una colección de nombre alumnos, con los campos dni, nombre, asignatura y nota. La siguiente consulta calcula la nota mínima, la nota promedio y la nota máxima de todos los alumnos de la colección db.alumnos.aggregate([ { $group: { _id: null, notaMinima: { $min: "$nota" }, promedioNota: { $avg: "$nota" }, maximaNota: { $max: "$nota" } } } _id: null significa que coja todos los alumnos En SQL sería: select min(nota), avg(nota), max(nota) from alumnos 3Ejemplo: Haciendo grupos por asignatura, hacer una consulta en mongodb que calcule la nota mínima, la nota promedio y la nota máxima de los alumnos en cada grupo db.alumnos.aggregate([ { $group: { id: "$asignatura", minNota: { $min: "$nota" }, avgNota: { $avg: "$nota" }, maxNota: { $max: "$nota" } } } ]) En SQL sería: select min(nota), avg(nota), max(nota) from alumnos group by asignatura;
➢ Las operaciones de agregación son herramientas de MongoDB Query Language que nos permiten hacer consultas más complejas, más allá de las capacidades de una consulta de búsqueda simple con find(). Las agregaciones permiten procesar un gran número de documentos de una colección haciéndolos pasar por distintas etapas. Esto hace que las agregaciones sean una herramienta fundamental para el análisis de datos en MongoDB. Se les conoce como Tubería de Agregación (Aggregation Pipeline)
> El concepto de "pipeline", consiste en una secuencia ordenada de etapas donde cada etapa realiza una operación específica en los documentos de la colección. Cada etapa del pipeline toma los resultados de la etapa anterior y realiza una operación adicional, lo que permite realizar transformaciones complejas en los datos. Los datos resultantes de la primera etapa, es la entrada de la segunda etapa, y así sucesivamente hasta que la última etapa retorna el resultado final obtenido
➢ Para utilizar la tubería de agregación de MongoDB, utilizamos el método aggregate el cual recibe como parámetro una serie de "etapas", en la que cada etapa consta de una operación a realizar.
> La sintaxis para ejecutar un comando de agregación sería la siguiente: db.collection.aggregate([ { <etapa>}, { <etapa>} ]); 4> Los operadores que podemos utilizar a este nivel se denominan operadores de etapa.
> Hay que tener en cuenta que las etapas de una agregación se ejecutan en el orden que las coloquemos en el arreglo, por tanto, una etapa recibe los datos obtenidos de la etapa anterior. Ejemplo, si coloco la etapa del $limit antes de la del $skip, el $skip recibirará como entrada los documentos ya limitados a cierto número por $limit
colección db.ordenes.aggregate ([ $match fase -+{Smatch: {estado: "A"} }, Sgroup fase-+(Sgroup: {_Id: "$cliente_id", total: (Ssum: "Scantidad") } } 1) cliente_id="A123", cantidad: 500, estado: "A" Resultados diente_id="A123", cantidad: 500, estado: "A" Id="A123". total: 750 cliente_id="A123", cantidad: 250, estado: "A" 1 - Śmatch diente_id="A123". cantidad: 250, estado: "A" Sgroup cliente_id="8212". cantidad: 200, estado: "A" jd="8212", total: 200 1 cliente_id="8212". cantidad: 200 estado: "A" cliente_id="A123". cantidad: 500, estado: "D" Órdenes
Algunos ejemplos básicos de pipeline: Ejemplo 1: En este ejemplo, la pipeline realiza las siguientes acciones: · Filtra los empleados del departamento de Ventas. · Agrupa los empleados por cargo, calculando el salario promedio para cada cargo. · Ordena los resultados en orden descendente según el salario promedio. db.empleados.aggregate([ { $match: { departamento: "Ventas" } }, { $group: {_id: "$cargo", salarioPromedio: { $avg: "$salario" } } }, { $sort: { salarioPromedio: - 1 } } Ejemplo 2: Supongamos que se tiene una base de datos en mongodb que se llama empresa, y una colección de nombre trabajadores, con los campos dni, nombre, departamento, salario y comisión. La siguiente consulta en mongodb calcula salario más comisión, salario más 200, comisión multiplicada por 10 db.trabajadores.aggregate([ { $project: { id: 0, salarioMasComision: { $add: ["$salario", "$comision"] }, salarioMas200: { $add: ["$salario", 200] }, 8