Top Banner
David Luque Quintana Mongo University
41

MongoDB GDG

Jul 15, 2015

Download

Engineering

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MongoDB GDG

David Luque QuintanaMongo University

Page 2: MongoDB GDG

Quien soy

● David Luque Quintana● Graduado en Ing.

Informática● GDG Córdoba● Desarrollador MEAN● Iternox Semper

Page 3: MongoDB GDG

¿Que es MongoDB?

● Base de datos no relacional (noSQL)

● Orientada a documentos (JSON)

● Fácil de entender● Sintaxis simple y clara

Page 4: MongoDB GDG

¿Que significa no relacional?

Al tener una base de datos no relacional, no tenemos:

● Relaciones entre entidades● Transacciones. Es una unidad

única de trabajo, con varios savepoints y posible retornos.

Page 5: MongoDB GDG

¿Por qué usar MongoDB?

● Almacenamiento orientado a documentos● Soporte total a índices

○ Índices en cualquier atributo● Replicación y alta disponibilidad

○ Sistemas espejos en LAN y WAN● Escalabilidad horizontal● Consultas● Actualizaciones atómicas● Soporte comercial

Page 6: MongoDB GDG

¿Qué es JSON?

Acrónimo de JavaScript Object Notation.

Son documentos que guardan datos en notación de JavaScript

Page 7: MongoDB GDG

¿Qué es JSON?

Para quien sepa Python, son muy parecidos a los diccionarios.

Son documentos de tipo “clave : valor”

{ nombre : David, ciudad : Cordoba }

Page 8: MongoDB GDG

Por qué usar JSON

Con JSON podemos almacenar casi todo lo imaginable. Son documentos muy flexibles y de una sencilla notación.

Pongamos unos ejemplos

Page 9: MongoDB GDG

Por qué usar JSON

{ nombre : David, notas : { PW : 9, AC : 7,5 } }{ nombre : David, notas : [ { PW : 9 }, { AC : 7,5 } ] }

Los archivos de MongoDB no pueden ser superiores a 16MB.

Page 11: MongoDB GDG

Esquema de una app

Page 12: MongoDB GDG

Primer contacto

Abrir terminal: mongo

Elegir base de datos

Page 13: MongoDB GDG

Primer contacto

Insertar un elemento

Mostrar elementos - find()

Mostrar sólo un elemento - findOne()

db es un identificador de conexión con la base de datos

Page 14: MongoDB GDG

Si vemos el valor de db nos muestra en qué base de datos estamos

Una colección es un conjunto de documentos en particular

Primer contacto

Page 15: MongoDB GDG

Sin esquema

MongoDB se adapta a las iteraciones de las metodologías ágiles ya que no tiene una estructura como las bases de datos relacionales

Page 16: MongoDB GDG

CRUDCreate - Read - Update - Delete

Page 17: MongoDB GDG

Create

Sólo tenemos una función para insertar documentos en MongoDB

Page 18: MongoDB GDG

Read

Al leer de la base de datos tenemos tres opciones:● Extraer todos los elementos de la misma.● Extraer sólo lo que nos interesa.● Extraer sólo uno.

Page 19: MongoDB GDG

Read - find()

Con find() extraemos todos los documentos de la colección

Page 20: MongoDB GDG

Read - find()

Si queremos ver los resultados más vistosos usamos pretty()

Page 21: MongoDB GDG

Read - filtros

Una vez que tengamos muchos documentos, podemos filtrar introduciendo un campo en el find

Page 22: MongoDB GDG

Read - filtros

Con un segundo argumento en find() podemos pedir que nos retorne o no los campos

Page 23: MongoDB GDG

Read - operadores

Normalmente no trabajamos con valores constantes y debemos usar operadores (mayor que, menor que…)

Page 24: MongoDB GDG

Read - operadores

Podemos comprobar si un campo existe $exists

O si el campo es una cadena (especificación de BSON) $type

Page 25: MongoDB GDG

Read - operadores

Si necesitas usar expresiones regulares → libpcre → $regex

Page 26: MongoDB GDG

Read - operadores

Operador $or

Page 27: MongoDB GDG

Read - operadores

Operador $and

Page 28: MongoDB GDG

Read - findOne()

Para extraer sólo un documento usamos findOne(). Lo mejor es buscar por id.

La id la crea mongo al insertar el documento automáticamente y es única

Page 29: MongoDB GDG

Update - update()

El primer argumento es una consulta para buscar el documento. El segundo es para actualizarlo.

Cuidado! El documento cambia drásticamente si no tenemos cuidado con los update

Page 30: MongoDB GDG

Update

Para añadir nuevos campos a un documento usamos el operador $set

Page 31: MongoDB GDG

Update

Si queremos borrar un atributo lo elegimos con $unset y le damos valor 1

Page 32: MongoDB GDG

Update

Operaciones con el operador “.”

Podemos ir encadenando subdocumentos y accediendo con el operador “.”

Page 33: MongoDB GDG

Update

Podemos usar los arrays como si fuesen colas

Con $push introducimos por la cola

Page 34: MongoDB GDG

Update

Con $pop expulsamos desde la cabeza el elemento que queramos

Si ponemos 1, es una cola. Si ponemos 5, cuenta desde 1 hasta cinco desde la cabeza y expulsa el 4

Page 35: MongoDB GDG

Update

Podemos insertar varios elementos con $pushAll y también elimiar varios con $pullAll

También podemos borrar elementos sin importar la posición con $pull

Page 36: MongoDB GDG

Delete

Usamos para borrar el método remove(). Básicamente funciona como find(). Si no ponemos argumento borra todos los elementos.

Page 37: MongoDB GDG

Delete - drop()

● Computacionalmente más eficiente● Borra los índices

Page 38: MongoDB GDG

Índices

Page 39: MongoDB GDG

¿Qué son los índices?

● El indexado es básico para mejorar rendimiento.

● Ordenamiento de la colección según un atributo.

● Son listas ordenadas de claves.● Se ordenan por niveles.● 500 MB de RAM por índice.

Page 40: MongoDB GDG

¿Por qué usar índices?

● Usando find() recorremos toda la base de datos.

● Usando findOne() hasta que encontremos el documento

db.coleccion.find( { _id : 1 } )db.coleccion.findOne( { _id : 10000000 } )

Page 41: MongoDB GDG

Creación de índices

● Orden ascendente○ db.coleccion.ensureIndex( { nombre : 1 } ).

● Orden descendente.○ db.coleccion.ensureIndex( { nombre : -1 } ).