Mongo PPT
Mongo PPT
Mongo PPT
mongoDB
Román Gajardo R.
Enero 2021
Temario
1. Base de datos relacionarles
2. Base de datos NoSQL
3. Tipos de Bases de datos NoSQL
4. SQL vs NoSQL
5. Ventajas y Desventajas
6. MongoDB
7. JSON and BSON
8. Tipos de datos
9. CRUD and Operators
10.Relaciones
11. Indices
12. Agregaciones
Base de datos (SQL)
• Una base de datos es un repositorio donde se almacenan datos relacionados y desde donde se pueden
también recupera.
• Cada una se compone de una o más tablas que guardan un conjunto de datos en columnas (atributos) y
filas (que conforman un registro)
• Una base de datos es relacional cuando se cumple el modelo relacional que garantiza la unicidad de
registros, integridad y normalización
• En ellas se usa el lenguaje SQL como estándar para la definición, manipulación y control.
Base de datos
Base de datos NoSQL
• NoSQL se refiere a una gran variedad de tecnologías de bases de datos que se ham desarrollado en
respuesta a las necesidades de desarrollo de las aplicaciones modernas:
• Los desarrolladores trabajan con aplicaciones que generan enormes columnas de datos nuevos y en
constante evolución (estructurados, semiestructurados, no estructurados)
• Hoy en día se trabaja con equipos pequeños que realizan sprints de desarrollo ágiles con iteraciones
rápidas y que generan código cada semana, cada 15 días o varias veces al día.
• Las aplicaciones ahora se proporcionan como servicios, que deben ser accesibles desde muchos
dispositivos distintos y deben poder escalarse a millones de usuarios
• Las organizaciones ahora estan recurriendo a arquitecturas de escalamiento horizontal, que usan
tecnologías de código abierto, servidores básicos y computación en la nube
Base de datos NoSQL
• Por lo tanto las bases de datos NoSQL corresponden a un modelo no relacional (sin tablas) que incorpora
un lenguaje de consultas ofreciendo flexibilidad para almacenar información no estructurada.
• Se adaptan perfectamente a muchas aplicaciones modernas, como dispositivos móviles, web y juegos
que requieren datos flexibles, escalables, de alto rendimiento y altamente funcionales.
Tipos de bases de datos NoSQL
• Clave-valor: son altamente divisibles y permiten escalado horizontal. Los casos de uso como juegos,
tecnología publicitaria e IoT se prestan particularmente bien con este modelo de datos clave-valor.
• NoSQL
• Mayor Flexibilidad al no disponer de un esquema a seguir
• Los datos se almacenan en un formato que las aplicaciones necesitan
• Se puede escalar tanto verticalmente como horizontalmente
• Ofrece un alto rendimiento
Desventajas
• SQL
• Menos flexibilidad: hay que planificar con tiempo el esquema, ya que a futuro es mas complejo
modificarlo
• El uso de relaciones puede conllevar consultas Join complejas
• A veces el escalado horizontal se torna demasiado complicado
• NoSQL
• La flexibilidad piede conllevar a posponer decisiones de estructura importantes
• Alta posibilidad de tener datos duplicados.
MongoDB
• MongoDB es una base de datos de documentos que ofrece una gran escalabilidad y flexibilidad, y un
modelo de consultas e indexación avanzado.
• MongoDB almacena datos flexibles en documentos flexibles similares a JSON, esto permite que los
campos pueden variar entre documentos.
• El modelo de documento se asigna a los objetos en el código de su aplicación para facilitar el trabajo con
los datos
JSON and BSON
• JSON y BSON son primos cercanos, como lo indican sus nombres son casi idénticos.
• JSON o JavaScript Object Notation es un estándar muy popular para el intercambio de datos en la Web
en el que se base BSON (Binary JSON)
JSON
• Los objetos de JavaScript son contenedores
asociativos simples, en los que una clave de cadena
se asigna a un valor (que puede ser un numero,
cadena, función o incluso otro objeto)
• La estructura binaria de BSON codifica la información de tipo y longitud, lo que permite analizarla mucho más
rápidamente
• BSON se ha ampliado para agregar tipos de datos no nativos de JSON como fechas y datos binarios.
MongoDB usa JSON o BSON
• MongoDB almacena datos en formato BSON tanto internamente como a través de la red, pero no significa que
no pueda pensar MngoDB como una base de datos JSON
• Todo lo que pueda representar en JSON puede almacenarse de forma nativa en MongoDB y recuperarse con
la misma facilidad en JSON
MongoDB usa JSON o BSON
Comandos Básicos Mongo Shell
• Mostrar bases de datos habilitadas
• show dbs
• use <name-db>
• db.createCollection(‘<name-collection>’)
Comandos Básicos Mongo Shell
• Mostrar todas las colecciones en la base de datos (debe estar seleccionada la base de datos previamente)
• show collections
• Mostrar mostrar todas las funciones que pueden ser usadas con la base de datos
• db.<name-collection>.help()
• db.help()
• db
Comandos Básicos Mongo Shell
• Eliminar una colección
• db.<name-collection>.drop()
• db
x = {
nombre:"bertoldo",
calle:"General Jamón",
num:256,
cuentas:[
{num:”001", saldo:2000, compartida:true},
{num:"002", saldo:100, compartida:false}
],
contacto:{
email:"bertoldo@ucm.es",
telefono:{
fijo:”913421234",
movil:[“5655555”,"444444"]
}
}
}
Documentos - create
• Para crear un documento nuevo se pueden utilizar las siguientes funciones
• insertOne(<object>)
• insertMany(<list object>)
• insert(<object>) insert([<object>,<object>..])
• save(<object>)
• Cada nuevo documento que se crea se genera un atributo _id correspondiente a un ObjectId el cual es
generado automáticamente mediante un algoritmo.
Documentos - create
• Demostración
• Tanto find como findOne pueden seleccionar los campos a mostrar, por defecto todas las claves tienen la
propiedad de 1 o true
• find( {} , { field : 0 o false})
• También estas funciones poseen una función para dejar los documentos en formato JSON mediante la
función pretty()
Documentos - Read
• Demostración
Documentos - Read
• Ejercicios , Actividad 3
Documentos - Read - Comparison Operators
• A continuación, en una función find o findOne se pueden utilizar los siguientes operadores.
• $eq, Especifica una condición de igualdad, entregando los documentos que cumplan con el match
• $gt, selecciona los documentos donde el valor del campo es mayor al valor especificado
• $gte, selecciona los documentos donde e el valor del campo es mayor o igual al valor especificado
Documentos - Read - Comparison Operators
• $in, selecciona los documentos donde el valor del campo es igual a uno de los valores especificados en
un arreglo.
• $lt, selecciona los documentos donde el valor del campo es menor que el valor especificado
• $lte, selecciona los documentos donde el valor del campo es menor o igual al valor especificado
Documentos - Read - Comparison Operators
• $ne, selecciona los documentos donde el valor del campo no es igual al valor especificado
• $not, Invierte el efecto de una expresión y retorna todos los documentos que no cumplen con la expresión
• $nor, une consultas con la lógica NOR retornando todos los documentos que no cumplen con las
condiciones
• $or, une consultas con la lógica OR retornando todos los documentos que cumplan con al menos una
condición
Documentos - Read - more methods
• El método find puede tener mas especializaciones como
• skip(integer), se salta la cantidad de documentos indicada como parámetro
• sort({field:1 or -1}), ordena por campo indicado, donde 1 ordena ascendente y -1 descendente
• updateOne(<filter>,<update>,<options>)
• updateMany(<filter>,<update>,<options>)
• replaceOne(<filter>,<update>,<options>)
• update()
Documentos - Update
• Demostración
•
Documentos - Update
• Ejercicios, Actividad 7
Documentos - Update - Operators
• $currendDate, operador que establece el valor de un campo en la fecha actual.
• $inc, operador que incrementa un campo por un valor específico ya sea negativo o positivo
• $min, operador que actualiza el valor de un campo , solo si el valor es menor al actual.
Documentos - Update - Operators
• $max, operador que actualiza el valor de un campo solo si el nuevo valor es mayor al actual
• db.movies.findOne({_id:1}).genres
• db.movies.find({genres:’Short'})
Documentos con matrices
• Demostración
Documentos con matrices operadores
• Cuando se trabajan con matrices se pueden utilizar los siguientes operadores
• $size, entrega los documentos donde una matriz tenga una cierta cantidad de elementos
• { <array field> : { $size : integer } }
• $all, entrega los documentos donde en una matriz podamos buscar algunos elementos que tenga la
matriz
• { <array field> : { $all: { [ value1,…, valueN ] } } }
• $elemMatch, entrega los documentos buscando en una matriz de objetos consultando por elementos
internos
• { <array field> : { $elemMatch: { <operator1>,…,<operatorN> } } }
• $slice, entrega documentos cortando elementos de la matriz, indicando cuantos elementos queremos
mostrar.
• {<filter>},{ <array field> : { $slice: integer o [saltos, cantidad]} }
Documentos con matrices operadores
• Ejemplo,
db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
{ item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
{ item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
{ item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
{ item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
•
Documentos incrustados - update
• Para el siguiente esquema:
• Esta instrucción creará si no existe un campo llamado nicknames de tipo Array con el valor indicado