2. Quien soy
● David Luque 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 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.
5. ¿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
6. ¿Qué es JSON?
Acrónimo de JavaScript
Object Notation.
Son documentos que guardan
datos en notación de
JavaScript
7. ¿Qué es JSON?
Para quien sepa Python, son muy
parecidos a los diccionarios.
Son documentos de tipo “clave :
valor”
{ nombre : David, ciudad : Cordoba }
8. 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
9. 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.
13. 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
14. 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
15. 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
18. 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.
19. Read - find()
Con find() extraemos todos los documentos de
la colección
20. Read - find()
Si queremos ver los resultados más vistosos
usamos pretty()
21. Read - filtros
Una vez que tengamos muchos documentos,
podemos filtrar introduciendo un campo en el
find
22. Read - filtros
Con un segundo argumento en find() podemos
pedir que nos retorne o no los campos
23. Read - operadores
Normalmente no trabajamos con valores
constantes y debemos usar operadores (mayor
que, menor que…)
24. Read - operadores
Podemos comprobar si un campo existe $exists
O si el campo es una cadena (especificación
de BSON) $type
28. 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
29. 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
34. 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
35. 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
36. Delete
Usamos para borrar el 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
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 } ).