41
David Luque Quintana Mongo University

MongoDB GDG

Embed Size (px)

Citation preview

David Luque QuintanaMongo University

Quien soy

● David Luque Quintana● Graduado en Ing.

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

¿Que es MongoDB?

● Base de datos no relacional (noSQL)

● Orientada a documentos (JSON)

● Fácil de entender● Sintaxis simple y clara

¿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.

¿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

¿Qué es JSON?

Acrónimo de JavaScript Object Notation.

Son documentos que guardan datos en notación de JavaScript

¿Qué es JSON?

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

Son documentos de tipo “clave : valor”

{ nombre : David, ciudad : Cordoba }

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

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.

Esquema de una app

Primer contacto

Abrir terminal: mongo

Elegir base de datos

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

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

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

CRUDCreate - Read - Update - Delete

Create

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

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.

Read - find()

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

Read - find()

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

Read - filtros

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

Read - filtros

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

Read - operadores

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

Read - operadores

Podemos comprobar si un campo existe $exists

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

Read - operadores

Si necesitas usar expresiones regulares → libpcre → $regex

Read - operadores

Operador $or

Read - operadores

Operador $and

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

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

Update

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

Update

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

Update

Operaciones con el operador “.”

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

Update

Podemos usar los arrays como si fuesen colas

Con $push introducimos por la cola

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

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

Delete

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

Delete - drop()

● Computacionalmente más eficiente● Borra los índices

Índices

¿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.

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

Creación de índices

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

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