0% encontró este documento útil (0 votos)
78 vistas

Mongo DB

Este documento proporciona una guía para entender el funcionamiento de MongoDB, una base de datos NoSQL basada en documentos. Explica conceptos clave como bases de datos, colecciones, documentos y operaciones CRUD. También cubre temas como MongoDB Atlas, drivers de MongoDB y comandos básicos de la consola de MongoDB.

Cargado por

Diego Bonilla
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
78 vistas

Mongo DB

Este documento proporciona una guía para entender el funcionamiento de MongoDB, una base de datos NoSQL basada en documentos. Explica conceptos clave como bases de datos, colecciones, documentos y operaciones CRUD. También cubre temas como MongoDB Atlas, drivers de MongoDB y comandos básicos de la consola de MongoDB.

Cargado por

Diego Bonilla
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

MongoDB, ORM, Mongoose, Sequelize

(Guía del profesor)

Meta
Entender el funcionamiento de Mongo DB, sus características y aplicaciones.

Resumen
Se explicará cómo funciona Mongo DB y como hacer las principales operaciones en él, sus comandos,
códigos, operaciones y métodos más relevantes.

Al completar esta actividad, los estudiantes:


✓ Tendrán un mejor dominio de los elementos básicos de Mongo DB
✓ Entenderán el concepto de Mongo DB
✓ Conocerán buenas prácticas en el uso de Mongo DB
✓ Aprenderán características de las Mongo DB
✓ Sabrán usar diferentes métodos para usar correctamente Mongo DB

N Actividad Descripción Recursos Tiemp


o o
.
1 Saludo y Bienvenida Salude a los estudiantes, explique Contenido de la 10 min
brevemente el flujo de la sesión. sesión
2 Bases de datos No Explicación de las 4 bases de datos Diapositivas 20 min
SQL No SQL

3 Mongo DB y su Explicación de sus características Diapositivas 10 min

Sesión 29: MongoDB, ORM, Mongooose, Sequelize


ecosistema

4 Mongo DB + Drivers Explicación de sus características Diapositivas 15 min

Break 10 min
5 Bases de datos, Explicación del concepto y modo de Diapositivas – 15 min
colecciones y uso Mongo Shell
documentos en
Mongo DB

6 Operaciones CRUD Explicación del concepto y modo de Diapositivas – 15 min


desde la consola de uso Mongo Shell
Mongo DB
7 Atomicidad Explicación de los comandos y Diapositivas – 10 min
código Mongo Shell
Operaciones Listado de los comandos, $eq, $gt, Diapositivas – 10 min
relacionales $gte, $lt, $lte, $in, $nin y $ne y Mongo Shell
código

1
8 Borrar documentos Explicación del concepto y modo de Diapositivas – 15 min
de una colección con uso Mongo Shell
los métodos Delete
One y Delete Many
9 Modificar un Explicación del concepto y modo de Diapositivas – 15 min
documento mediante uso Mongo Shell
el método Update
One
10 Modificar múltiples Explicación del concepto y modo de Diapositivas – 15 min
documentos con el uso Mongo Shell
método Update Many
11 Operadores Lógicos Listado de los comandos, $and, $or, Diapositivas – 20 min
$not y código Mongo Shell

Duración: 150 minutos

Saludo y bienvenida:
Salude a los estudiantes y pregúnteles sobre la clase anterior si buscaron más información al respecto y
cuénteles que se hará en esta clase.

Bases de datos NoSQL

Las bases de datos NoSQL tienen 4 grandes familias: Key Value Stores, basadas en grafos, columnares y
basadas en documentos.

Key Value Stores: Guardan la información en formato de llaves y valores. Las usamos para guardar cache,
información de sesión de los usuarios o cosas muy sencillas. Son muy rápidas de consultar, pero no podemos

Sesión 29: MongoDB, ORM, Mongooose, Sequelize


usarlas en casos más complejos donde necesitamos estructuras más especiales. El mejor ejemplo de estas
bases de datos es Redis.

Graph Databases: Bases de datos basadas en Grafos. Nos permiten establecer conexiones entre nuestras
entidades para realizar consultas de una forma más eficiente que en bases de datos relacionales (así como
Twitter o Medium donde cada publicación tiene diferentes relaciones entre sus usuarios, likes, etc). Por
ejemplo: Neo4j o JanusGraph.

Nos permite relacionar múltiples entidades. Mejor rendimiento que bases de datos relacionales.

Wide-column Stores: Bases de datos columnares. Tienen una llave de fila y otra de columnas para hacer
consultas muy rápidas y guardar grandes cantidades de información, pero modelar los datos se puede volver
un poco complicado. Las usamos en Big Data, IoT, sistemas de recomendaciones, entre otras. Por ejemplo:
Cassandra o HBase.

Document Databases: Bases de datos basadas en documentos. Nos permiten guardar documentos dentro
de colecciones, tiene muy buena performance y flexibilidad que nos permite modelar casos de la vida real de
forma sencilla y efectiva. Por ejemplo: MongoDB o CouchBase.

2
MongoDB y su ecosistema

MongoDB es una base de datos gratis y de código abierto No Relacional basada en documentos que nos
permite guardar una gran cantidad de documentos de forma distribuida. Mongo también es el nombre de la
compañía que desarrolla el código de esta base de datos.

Una de sus principales características es que nos permite guardar nuestras estructuras o documentos en
formato JSON (no exactamente JSON, pero si algo muy parecido, lo veremos más adelante) para tener una
gran flexibilidad a la hora de modelar situaciones de la vida real.

Por ser una base de datos distribuida podemos hablar no de uno sino de varios servidores, lo que conocemos
como el Cluster de MongoDB. Gracias a esto obtenemos una gran escalabilidad de forma horizontal
(escalabilidad en cantidad de servidores).

MongoDB es “Schema Less” lo que permite que nuestros documentos tengan estructuras diferentes sin
afectar su funcionamiento, algo que no podemos hacer con las tablas de las bases de datos relacionales. Su
lenguaje para realizar queries, índices y agregaciones es muy expresivo.

MongoDB Atlas

Tenemos varios proveedores que nos permiten utilizar o alquilar MongoDB como servicio y en este caso
vamos a usar MongoDB Atlas por ser desarrollado por las mismas personas que desarrollan MongoDB.

MongoDB Atlas tiene las siguientes características:

• Aprovisionamiento automático de clústeres con MongoDB

• Alta disponibilidad

• Altamente escalable

Sesión 29: MongoDB, ORM, Mongooose, Sequelize


• Seguro

• Disponible en AWS, GCP y Microsoft Azure

• Fácil monitoreo y optimización

MongoDB + Drivers

¿Qué son los drivers en MongoDB?

3
Son las librerías que utilizamos para comunicar nuestra aplicación con nuestra base de datos. Sin nuestros
drivers no podemos trabajar con nuestros clústeres de base de datos.

¿Cómo agregar los drivers dentro de nuestro proyecto?

Usamos un gestor de dependencias. Lo agregamos en nuestro gestor de dependencia; si usamos NodeJS,


utilizamos ‘npm install mongodb --save’.

MongoDB es una base de datos open source, NoSQL y basada en documentos que nos permite guardar una
gran cantidad información de forma distribuida. Mongo también es el nombre de la compañía que desarrolla
el código de esta base de datos. Los drivers de MongoDB son librerías oficiales o desarrolladas por la
comunidad que podemos usar para comunicar nuestras aplicaciones con las bases de datos. Una de las más
populares es Mongoid, un ORM que convierte nuestros código Ruby en queries que entiende nuestra base de
datos.

Bases de datos, Colecciones y Documentos en MongoDB

• Base de datos: contenedor donde se almacenarán colecciones.

• Colecciones: no imponen esquema y son equivalente a una tabla en una db relacional, pero estas
almacenan documentos.

• Documentos: son registros de una colección, estos pueden contener diferente estructura y se
guardan en formato BSON que permite almacenar más tipos de datos, la conversión de JSON a
BSON la hace a través de drivers.

Sesión 29: MongoDB, ORM, Mongooose, Sequelize

4
Operaciones CRUD desde la consola de MongoDB

Instrucciones y comandos de la clase:

Conexión con el clúster de MongoDB Atlas: mongo "URL DE NUESTRO CLUSTER", (recuerda añadir tu IP a

Sesión 29: MongoDB, ORM, Mongooose, Sequelize


la lista de IPs permitidas para no tener problemas en esta parte).

Listar las bases de datos de nuestro cluster: show dbs.

Seleccionar una base de datos: use NOMBRE_BD. Debemos crear por lo menos un documento si la base de
datos es nueva porque MongoDB no crea bases de datos vacías.

Recordar qué base de datos estamos usando: db.

Listar las colecciones de nuestra base de datos: show collections.

Crear una colección (opcional) y añadir un elemento en formato


JSON: db.NOMBRE_COLECCIÓN.insertOne({ ... }). La base de datos responde true si la operación fue exitosa
y crea el campo irrepetible de _id si nosotros no lo especificamos.

Crear una colección (opcional) y añadir algunos elementos en formato


JSON: db.NOMBRE_COLECCIÓN.insertMany([{ ... }, { ... }]). Recibe un array de elementos y devuelve todos
los IDs de los elementos que se crearon correctamente.

5
Encontrar elementos en una colección: db.NOMBRE_COLECCIÓN.find() Podemos aplicar filtros si queremos
o encontrar solo el primer resultado con el método findOne().

Listar todos los posibles comandos que podemos ejecutar: db.NOMBRE_COLECCIÓN.help().

use base1
db.libros.drop()

db.libros.insertOne({
_id: 1,
titulo: 'El aleph',
autor: 'Borges',
editorial: ['Siglo XXI', 'Planeta'],
precio: 20,
cantidad: 50
})
db.libros.insertOne({
_id: 2,
titulo: 'Martin Fierro',
autor: 'Jose Hernandez',
editorial: ['Siglo XXI'],
precio: 50,
cantidad: 12
})
db.libros.insertOne({
_id: 3,
titulo: 'Aprenda PHP',
autor: 'Mario Molina',
editorial: ['Siglo XXI', 'Planeta'],
precio: 50,
cantidad: 20
})
db.libros.insertOne({
_id: 4,

Sesión 29: MongoDB, ORM, Mongooose, Sequelize


titulo: 'Java en 10 minutos',
editorial: ['Siglo XXI'],
precio: 45,
cantidad: 1
})

6
Atomicidad.

Cuando se escribe un documento, si no se escribe correctamente se hace roolback.

Cuando se usa InsertMany(), es atomico a nivel de documento, se pueden escribir uno o dos documentos
pero si hay algún error en alguno ese no se escribe.

https://docs.mongodb.com/manual/core/write-operations-atomicity/

Operadores relacionales $eq, $gt, $gte, $lt, $lte, $in, $nin y $ne

Sesión 29: MongoDB, ORM, Mongooose, Sequelize


Listado de operadores relacionales

• $eq - equal - igual

• $lt - low than - menor que

• $lte - low than equal - menor o igual que

• $gt - greater than - mayor que

• $gte - greater than equal - mayor o igual que

• $ne - not equal - distinto

• $in - in - dentro de

• $nin - not in - no dentro de

7
Veamos con algunos ejemplos como utilizar estos operadores para recuperar documentos que cumplen
determinadas condiciones.

Recuperar todos los libros que tienen un precio mayor a 40:

db.libros.find({ precio: { $gt: 40 } })

Recuperar todos los libros que en el campo cantidad tiene 50 o más:

db.libros.find({ cantidad: { $gte: 50 } })

Recuperar todos los libros que en el campo cantidad hay un valor distinto a 50:

db.libros.find({ cantidad: { $ne: 50 } })

Recuperar todos los libros cuyo precio estén comprendidos entre 20 y 45:

db.libros.find({ precio: { $gte: 20, $lte: 45 } })

Recuperar todos los libros de la editorial 'Planeta':

db.libros.find({ editorial: { $in: ['Planeta'] } })

Recuperar todos los libros que no pertenezcan a la editorial 'Planeta':

Sesión 29: MongoDB, ORM, Mongooose, Sequelize


db.libros.find({ editorial: { $nin: ['Planeta'] } })

Hay que acostumbrarse en un principio a utilizar estos operados para filtrar documentos de una colección,
luego veremos que estos operadores también se emplean cuando efectuemos borrados y modificaciones de
documentos.

8
Borrar documentos de una colección con los métodos deleteOne y deleteMany

Hay dos métodos para eliminar documentos:

• deleteMany: Borra todos los documentos que cumplen la condición que le enviamos.

deleteOne: Borra el primer documento que cumple la condición que le pasamos.

Si queremos eliminar el documento que almacena en el campo el _id con valor 1 luego podemos utilizar la
sintaxis:

db.libros.deleteOne({ _id: 1 })

Lo más conveniente es utilizar el método 'deleteOne' ya que solo uno puede cumplir esa condición al ser la
clave primaria del documento.

Recordemos que la sintaxis alternativa para eliminar el documento con _id con valor 1 es:

db.libros.deleteOne({ _id: { $eq: 1 } })

La sintaxis anterior es buena recordar ya que los otros operadores relacionales hay que utilizarlos en forma
obligatoria y no tienen una sintaxis alternativa como el $eq.

Para borrar todos los libros que tienen un precio mayor o igual a 50 tenemos:

Sesión 29: MongoDB, ORM, Mongooose, Sequelize


db.libros.deleteMany({ precio: { $gte: 50 } })

Modificar un documento mediante el método updateOne

Para modificar un documento en particular disponemos de un método llamado updateOne

db.libros.updateOne({ _id: { $eq: 1 } }, { $set: { precio: 15, cantidad: 1 } })

Con las bases de datos documentales tengamos en cuenta que los documentos pueden tener distintas
cantidades de campos. Por ejemplo, si queremos agregar el campo descripción al libro con '_id' 4 debemos
utilizar la sintaxis:

9
db.libros.updateOne({ _id: { $eq: 4 } }, { $set: { descripcion: 'Cada unidad trata un tem
a fundamental de Java desde 0.' } })

Si queremos eliminar un campo de un documento debemos emplear el operador de actualización $unset.


Probemos ahora de eliminar el campo que acabamos de crear para el documento con _id 4:

D
b.libros.updateOne({ _id: { $eq: 4 } }, { $unset: { descripcion: '' } })

Es importante entender que mediante el operador $unset eliminamos el campo, en cambio si utilizamos el
operador $set modificamos el contenido del campo, luego si ejecutamos:

db.libros.updateOne({ _id: { $eq: 4 } }, { $set: { descripcion: '' } })

Disponemos también de operadores de modificación para arreglos, veamos como podemos agregar y
eliminar elementos en el arreglo 'editorial':

db.libros.updateOne({ _id: { $eq: 1 } }, { $push: { editorial: 'Atlántida' } })

De forma similar para eliminar un elemento del arreglo debemos emplear el operador $pull:

db.libros.updateOne({ _id: { $eq: 1 } }, { $pull: { editorial: 'Atlántida' } })

Sesión 29: MongoDB, ORM, Mongooose, Sequelize


Modificar múltiples documentos con el método updateMany

El segundo método que nos permite actualizar documentos, pero en forma masiva es el método
updateMany.

db.libros.updateMany({ _id: { $gt: 2 } }, { $set: { cantidad: 0 } })

db.libros.updateMany({ cantidad: { $eq: 0 } }, { $set: { faltantes: true } })

db.libros.updateMany({ cantidad: { $eq: 0 } }, { $unset: { faltantes: true }, $set: { can


tidad: 100 } })

10
Operadores lógicos $and, $or y $not

Cuando necesitamos construir consultas que deban cumplir varias condiciones utilizaremos los operadores
lógicos.

El operador $and lo hemos utilizando en forma implícita, por ejemplo, si tenemos:

db.libros.find({ precio: 50, cantidad: 20 })

La sintaxis alternativa para el find es:

db.libros.find({ $and: [{ precio: 50 }, { cantidad: 20 }] })

Para los operadores $or y $not no hay una forma de disponer una sintaxis implícita.

Para recuperar los libros que tienen un precio mayor o igual a 50 o la cantidad es 1 debemos implementar
mediante un $or la siguiente sintaxis:

db.libros.find({ $or: [{ precio: { $gte: 50 } }, { cantidad: 1 }] })

Si queremos recuperar todos los documentos de la colección libros que no tienen un precio mayor o igual a
50 la sintaxis debe ser:

Sesión 29: MongoDB, ORM, Mongooose, Sequelize


db.libros.find({ precio: { $not: { $gte: 50 } } })

Si queremos borrar todos los libros cuyo precio no sean iguales a 50 podemos codificar:

1db.libros.deleteMany({ precio: { $not: { $eq: 50 } } })

11
Valoración y cierre
Finalmente pregunte a los estudiantes: ¿Cómo les pareció la sesión? ¿Por qué? ¿Qué aprendieron hoy?
¿Qué fue lo que más les gusto?, resuelva dudas y organice el espacio de trabajo. Por último, invítelos a que
profundicen aún más en los temas que les interesaron.

Referencias Bibliografía

https://www.tutorialspoint.com/mongodb/index.htm

https://docs.mongodb.com/manual/tutorial/

https://www.javatpoint.com/mongodb-tutorial

https://www.javatpoint.com/mongodb-tutorial

https://www.w3schools.com/python/python_mongodb_getstarted.asp

https://www.w3schools.com/python/python_mongodb_getstarted.asp

https://www.datacamp.com/community/tutorials/introduction-mongodb-python

https://docs.atlas.mongodb.com/getting-started/

Sesión 29: MongoDB, ORM, Mongooose, Sequelize

12

También podría gustarte