Consideraciones importantes y operaciones en MongoDB

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ás

12 páginas

1
Algunas consideraciones importantes en Mongodb
Los documentos son la unidad básica de organización de la información en
MongoDB, y desempeñan un papel equivalente a las fila en las bases de datos
relacionales, y las colecciones hacen un papel equivalente a las tablas
MongoDB es sensitivo tanto a las mayúsculas/minúsculas como a los tipos de
datos. Así, por ejemplo, los siguientes documentos se consideran distintos:
{“Edad”:3}, {“Edad”: “3”}, {“edad”:3}, {“edad”:”3”}.
Los documentos no pueden tener valores duplicados del tipo (la columna),
ejemplo, {“edad”:3, ”edad”:56}.
Arrays: se representa como un conjunto o lista de valores. Ejemplo,
{“aficiones”: [“leer”, ballet”,”padel”]}.
Para añadir elementos al final del array se utiliza el modificador $push
db.amigos.updateOne({Nombre:"Elena"}, {$push: {Aficiones: "gym"}})
2
Los arrays se pueden tratar como un conjunto añadiendo valores solo si no están.
Para ello se usa el operador $ne junto al operador $push o el operador $addToSet
Documentos embebidos: los documentos pueden contener documentos
embebidos. Por ejemplo,
{
“nombre”: “Joana”,
“dirección”: {
“calle”:”23 entre L y M”,
“ciudad”: “La Habana”,
“País”: “Cuba”
}
}
Identificador de objetos: Cada documento tiene un clave denominada _id. Por
defecto el valor de esta clave será de tipo ObjectId. En una colección, los
documentos se identifican de manera única con la clave _id, por tanto este valor
no se puede repetir
Los documentos y las consultas pueden tener código JavaScript
Para organizar los nombres de las bases de datos, colecciones y documentos,
estaría bien usar espacios de nombres separados por un punto, por ejemplo:
Base de datos: editorial
Colección: editorial.autores
Colección: editorial.libros
Los nombres de las bases de datos son sensitivos a mayúsculas y minúsculas, una
regla práctica es usar siempre nombres en minúscula.
Para limitar los resultados en una consulta se encadena la función limit () sobre la
llamada a find(). Por ejemplo, para retornar solo tres resultados como máximo
db.autores.find().limit (3).
skip() permite saltarse resultados cuando se junta con la función find ().
Ejemplo, esta consulta se salta los tres primeros documentos
db.autores.find().skip(3)

Visualiza gratis el PDF completo

Regístrate para acceder al documento completo y transformarlo con la IA.

Vista previa

Consideraciones Importantes en MongoDB

Algunas consideraciones importantes en Mongodb

  • Los documentos son la unidad básica de organización de la información en MongoDB, y desempeñan un papel equivalente a las fila en las bases de datos relacionales, y las colecciones hacen un papel equivalente a las tablas
  • MongoDB es sensitivo tanto a las mayúsculas/minúsculas como a los tipos de datos. Así, por ejemplo, los siguientes documentos se consideran distintos: {"Edad":3}, {"Edad": "3"}, {"edad":3}, {"edad":"3"}.
  • Los documentos no pueden tener valores duplicados del tipo (la columna), ejemplo, {"edad":3, "edad":56}.
  • Arrays: se representa como un conjunto o lista de valores. Ejemplo, {"aficiones": ["leer", "ballet","padel"]}.
  • Para añadir elementos al final del array se utiliza el modificador $push

> 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

  • Los arrays se pueden tratar como un conjunto añadiendo valores solo si no están. Para ello se usa el operador $ne junto al operador $push o el operador $addToSet
  • Documentos embebidos: los documentos pueden contener documentos embebidos. Por ejemplo, { "nombre": "Joana", "dirección": { "calle":"23 entre Ly M", "ciudad": "La Habana", "País": "Cuba" } }
  • Identificador de objetos: Cada documento tiene un clave denominada _id. Por defecto el valor de esta clave será de tipo ObjectId. En una colección, los documentos se identifican de manera única con la clave _id, por tanto este valor no se puede repetir

Y Los documentos y las consultas pueden tener código JavaScript

  • Para organizar los nombres de las bases de datos, colecciones y documentos, estaría bien usar espacios de nombres separados por un punto, por ejemplo: Base de datos: editorial Colección: editorial.autores Colección: editorial.libros
  • Los nombres de las bases de datos son sensitivos a mayúsculas y minúsculas, una regla práctica es usar siempre nombres en minúscula.
  • Para limitar los resultados en una consulta se encadena la función limit () sobre la llamada a find(). Por ejemplo, para retornar solo tres resultados como máximo db.autores.find().limit (3).
  • skip() permite saltarse resultados cuando se junta con la función find (). Ejemplo, esta consulta se salta los tres primeros documentos db.autores.find().skip(3)

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})

Funciones de Grupo en MongoDB

  • Algunas funciones de grupo:
    • $group: hacer grupos
    • $first: devuelve el primer valor de un campo.
    • $last: devuelve el último valor de un campo
    • $max: devuelve el valor más alto
    • $min: devuelve el valor más pequeño
    • $avg: calcula la media aritmética
    • $sum: suma todos los valores de un campo.

Ejemplo de Cálculo de Notas

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;

Operaciones de Agregación y Pipeline

➢ 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

Operadores de Etapa Comúnmente Utilizados

  • Algunos de los operadores más utilizados en las etapas son:
    • $match Permite elegir sólo aquellos documentos de una colección con los que queremos trabajar. Este operador funciona de forma similar al método find(), nos permite filtrar documentos de la colección según la consulta que pasemos como parámetro Ejemplo: Para obtener los estudiantes de nombre "Juan" hacemos de db.estudiantes.aggregate([{$match : {nombre : "Juan"}]) (esto es equivalente a un where en sql)
    • $project. Permite seleccionar los campos (columnas) con los que quieras trabajar. También permite modificar los datos de un documento cuando se muestre como resultado, según las especificaciones que pasemos como parámetro ya sea descartando que muestre algunos campos o agregando nuevos mediante el uso de otras expresiones. Ejemplo db. productos. aggregate([ { $project: { nombre: 1, precio: 1 } } ]) Este ejemplo selecciona solo los campos "nombre" y "precio" de cada documento y muestra solo esos campos en la salida. Ejemplo: Si sólo queremos mostrar el nombre de los estudiantes de la colección, hacemos: db.estudiantes.aggregate([{$project : {nombre:1, _id:0}}]) 5
    • $group Agrupa documentos según una determinada expresión y genera un documento por cada grupo el cual será la salida de esta etapa, y la entrada para la próxima etapa en la tubería (la misma idea de group by en sql). Ejemplo: el promedio de las notas de los estudiantes db.estudiantes.aggregate([ { $group: { id: null, promedioNota: { $avg: "$nota" } } } Ejemplo: el promedio de las notas de los estudiantes por ciclo db.estudiantes.aggregate([ { $group: { id: $nombreciclo, promedioNota: { $avg: "$nota" } } }
    • $sort. Permite ordenar los resultados por el valor de un campo específico. Como parámetro recibe un objeto con los diferentes campos sobre los cuales se ordenará, y un orden. El orden puede ser 1 si es ascendente o -1 si es descendente. Ejemplo: mostrar las notas de los estudiantes ordenadas de manera descendente db.estudiantes.find().sort({nota: - 1 }) o también puede ser: db.estudiantes.aggregate([ { $sort: { nota: - 1 } } 1) 6
    • $count: Nos permite obtener la cantidad de documentos que se tienen en la etapa específica de la agregación en la que se llama.
    • $limit Nos permite limitar el número de documentos obtenidos por la agregación en un entero que pasamos como parámetro. Ejemplo: db.estudiantes.aggregate([ { $limit: 10 } ]) Este ejemplo devuelve solo los primeros 10 documentos de la colección estudiantes.
    • $skip se utiliza para omitir un número específico de documentos al principio de la salida de una consulta. Es decir, permite "saltar" una cantidad determinada de registros y empezar a mostrar los resultados a partir de un punto específico. Ejemplo: db.collection.aggregate([ { $skip: 5 } ]) Este ejemplo devuelve los documentos de la colección después de omitir los primeros 5.
    • $lookup para trabajar con información de más de una colección, combinar campos de diferentes colecciones
    • $out permite trasladar los resultados de la agregación a una nueva colección, o sea, no lo muestra en pantalla, pone los resultados en una nueva colección. $out debe ser la última etapa de la pipeline. 7

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

Ejemplos Básicos de Pipeline

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

¿Non has encontrado lo que buscabas?

Explora otros temas en la Algor library o crea directamente tus materiales con la IA.