David Luque Quintana
Mongo 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.
Como instalar MongoDB
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
CRUD
Create - 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 } ).

MongoDB GDG

  • 1.
  • 2.
    Quien soy ● DavidLuque Quintana ● Graduado en Ing. Informática ● GDG Córdoba ● Desarrollador MEAN ● Iternox Semper
  • 3.
    ¿Que es MongoDB? ●Base de datos no relacional (noSQL) ● Orientada a documentos (JSON) ● Fácil de entender ● Sintaxis simple y clara
  • 4.
    ¿Que significa norelacional? 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.
  • 5.
    ¿Por qué usarMongoDB? ● 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
  • 6.
    ¿Qué es JSON? Acrónimode JavaScript Object Notation. Son documentos que guardan datos en notación de JavaScript
  • 7.
    ¿Qué es JSON? Paraquien sepa Python, son muy parecidos a los diccionarios. Son documentos de tipo “clave : valor” { nombre : David, ciudad : Cordoba }
  • 8.
    Por qué usarJSON Con JSON podemos almacenar casi todo lo imaginable. Son documentos muy flexibles y de una sencilla notación. Pongamos unos ejemplos
  • 9.
    Por qué usarJSON { 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.
  • 10.
  • 11.
  • 12.
    Primer contacto Abrir terminal:mongo Elegir base de datos
  • 13.
    Primer contacto Insertar unelemento Mostrar elementos - find() Mostrar sólo un elemento - findOne() db es un identificador de conexión con la base de datos
  • 14.
    Si vemos elvalor de db nos muestra en qué base de datos estamos Una colección es un conjunto de documentos en particular Primer contacto
  • 15.
    Sin esquema MongoDB seadapta a las iteraciones de las metodologías ágiles ya que no tiene una estructura como las bases de datos relacionales
  • 16.
    CRUD Create - Read- Update - Delete
  • 17.
    Create Sólo tenemos unafunción para insertar documentos en MongoDB
  • 18.
    Read Al leer dela base de datos tenemos tres opciones: ● Extraer todos los elementos de la misma. ● Extraer sólo lo que nos interesa. ● Extraer sólo uno.
  • 19.
    Read - find() Confind() extraemos todos los documentos de la colección
  • 20.
    Read - find() Siqueremos ver los resultados más vistosos usamos pretty()
  • 21.
    Read - filtros Unavez que tengamos muchos documentos, podemos filtrar introduciendo un campo en el find
  • 22.
    Read - filtros Conun segundo argumento en find() podemos pedir que nos retorne o no los campos
  • 23.
    Read - operadores Normalmenteno trabajamos con valores constantes y debemos usar operadores (mayor que, menor que…)
  • 24.
    Read - operadores Podemoscomprobar si un campo existe $exists O si el campo es una cadena (especificación de BSON) $type
  • 25.
    Read - operadores Sinecesitas usar expresiones regulares → libpcre → $regex
  • 26.
  • 27.
  • 28.
    Read - findOne() Paraextraer 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
  • 29.
    Update - update() Elprimer 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
  • 30.
    Update Para añadir nuevoscampos a un documento usamos el operador $set
  • 31.
    Update Si queremos borrarun atributo lo elegimos con $unset y le damos valor 1
  • 32.
    Update Operaciones con eloperador “.” Podemos ir encadenando subdocumentos y accediendo con el operador “.”
  • 33.
    Update Podemos usar losarrays como si fuesen colas Con $push introducimos por la cola
  • 34.
    Update Con $pop expulsamosdesde 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
  • 35.
    Update Podemos insertar varioselementos con $pushAll y también elimiar varios con $pullAll También podemos borrar elementos sin importar la posición con $pull
  • 36.
    Delete Usamos para borrarel método remove(). Básicamente funciona como find(). Si no ponemos argumento borra todos los elementos.
  • 37.
    Delete - drop() ●Computacionalmente más eficiente ● Borra los índices
  • 38.
  • 39.
    ¿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.
  • 40.
    ¿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 } )
  • 41.
    Creación de índices ●Orden ascendente ○ db.coleccion.ensureIndex( { nombre : 1 } ). ● Orden descendente. ○ db.coleccion.ensureIndex( { nombre : -1 } ).