1. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Bases de datos no relacionales. MongoDB
Luis Valencia Cabrera (lvalencia@us.es)
Research Group on Natural Computing
Departamento de Ciencias de la Computación e Inteligencia Artificial
Universidad de Sevilla
09-12-2019, Bases de Datos
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
2. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
3. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
4. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
5. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
6. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Abstrayendo a un diseño conceptual
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
7. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Abstrayendo a un diseño conceptual
Trasladando a diseño lógico
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
8. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Abstrayendo a un diseño conceptual
Trasladando a diseño lógico
Normalizando el diseño
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
9. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Abstrayendo a un diseño conceptual
Trasladando a diseño lógico
Normalizando el diseño
Comenzando a implementar en Access/MySQL
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
10. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Mundo relacional
Hemos trabajado con bases de datos relacionales...
Capturando requisitos funcionales
Abstrayendo a un diseño conceptual
Trasladando a diseño lógico
Normalizando el diseño
Comenzando a implementar en Access/MySQL
Planteando consultas sobre la BD con SQL
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
11. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Fortalezas
Podemos resaltar algunas bondades de este enfoque:
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
12. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Fortalezas
Podemos resaltar algunas bondades de este enfoque:
Diseño sólido
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
13. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Fortalezas
Podemos resaltar algunas bondades de este enfoque:
Diseño sólido
Captura de estructuras lógicas inherentes al mundo
representado
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
14. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Fortalezas
Podemos resaltar algunas bondades de este enfoque:
Diseño sólido
Captura de estructuras lógicas inherentes al mundo
representado
Estandarización del lenguaje de consultas
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
15. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Fortalezas
Podemos resaltar algunas bondades de este enfoque:
Diseño sólido
Captura de estructuras lógicas inherentes al mundo
representado
Estandarización del lenguaje de consultas
Separación de datos y aplicaciones
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
16. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
17. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
18. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
19. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Puede resultar imposible dotar de un esquema más o menos
estable
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
20. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Puede resultar imposible dotar de un esquema más o menos
estable
Podemos tener volúmenes de datos que lo hagan impracticable
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
21. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Puede resultar imposible dotar de un esquema más o menos
estable
Podemos tener volúmenes de datos que lo hagan impracticable
Las necesidades de consulta y actualización concurrente
pueden demandar nuevas soluciones
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
22. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Puede resultar imposible dotar de un esquema más o menos
estable
Podemos tener volúmenes de datos que lo hagan impracticable
Las necesidades de consulta y actualización concurrente
pueden demandar nuevas soluciones
Las BD relacionales pueden presentar problemas de
escalabilidad
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
23. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Otros ámbitos
¿Es siempre el enfoque adecuado?
Veamos...
Hay necesidades distintas según el ámbito de aplicación
A veces la estructura es demasiado dinámica
Puede resultar imposible dotar de un esquema más o menos
estable
Podemos tener volúmenes de datos que lo hagan impracticable
Las necesidades de consulta y actualización concurrente
pueden demandar nuevas soluciones
Las BD relacionales pueden presentar problemas de
escalabilidad
Hay otras soluciones que escalan bien horizontalmente y
pueden ayudarnos a subsanar el problema
Recordemos lo que vimos en el primer tema...
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
24. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
25. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Nuevos retos
El mundo en el que vivimos se encuentra en constante
evolución, formamos parte de un súper organismo sujeto a
cambio. Nuestro entorno cambia dı́a a dı́a, y más en el
aspecto tecnológico.
Google, Wikipedia, redes sociales, Twitter, etc. han implicado
un nuevo cambio de escala en el empleo de las TIC, y un reto
en cuanto a la actualización concurrente y disponibilidad de
enormes conjuntos de información en red.
Surge el mundo NoSQL (Not Only SQL)
Además, el Big Data lleva el tamaño de los volúmenes de
datos a otra dimensión.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
26. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
¿Estado actual?
1
1
https://scalegrid.io/blog/2019-database-trends-sql-vs-nosql-top-databases-
single-vs-multiple-database-use/
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
27. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Un poco de Historia
¿Estado actual?
2
2
https://scalegrid.io/blog/2019-database-trends-sql-vs-nosql-top-databases-
single-vs-multiple-database-use/
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
28. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Un poco de Historia
¿Estado actual?
3
3
https://www.explore-group.com/blog/the-most-popular-databases-
2019/bp46/
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
29. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Un poco de Historia
¿Estado actual?
4
4
https://db-engines.com/en/ranking
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
30. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
31. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Very Large Databases (VLDB)
Definición
Las siglas VLDB (Very Large Databases) denotan a bases de datos
que contienen tablas cuyo número de tuplas resulta
extremadamente alto.
No se puede hablar de cifras concretas, esto va cambiando con el tiempo,
evolucionando con la capacidad de almacenamiento de equipos
personales, servidores, aplicaciones, etc.Por hacernos una idea, se puede
entender como VLDB una base de datos de cientos de terabytes, con
cientos de miles de millones de filas.
Aparece incluso el concepto de XLDB (Extremely Large Databases).
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
32. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Big Data
Los términos anteriores han ido dejando paso a lo largo del último
lustro a la denominación de Big Data.
Definición
Entendemos por Big Data a conjuntos de información enormes, que
superan con mucho la capacidad del software de gestión de bases
de datos convencional para procesar datos en tiempo razonable.
Los retos con este tipo de tecnologı́as se centran en la captura,
almacenamiento, búsqueda, compartición, análisis y visualización
de los datos.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
33. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Big Data - 4 V’s
En el marco de Big Data se viene imponiendo la terminologı́a de
las 4 V?s para resumir las caracterı́sticas fundamentales:
4 V’s
Volume Grandes volúmenes de datos (petabytes,
exabytes, etc.)
Variety No limitado a información relacional,
puede incluir datos no estructurados
Velocity Los datos se deben procesar y analizar
rápidamente
Veracity Veracidad, adhesión a la verdad, precisión.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
34. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Big Data - 7 V’s
7 V’s
Volume Grandes volúmenes de datos (petabytes, exabytes, etc.)
Variety No limitado a información relacional, puede incluir datos no
estructurados
Velocity Los datos se deben procesar y analizar rápidamente
Veracity Veracidad, adhesión a la verdad, precisión.
Variability Datos cuyo significado cambia constantemente
Visualisation Presentar los datos de forma comprensible
Value Extraer información para la toma de decisiones
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
35. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
36. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Big Data y NoSQL
Enormes volúmenes de datos, y condiciones impuestas por las 7
V’s (disponibilidad, frecuencia de actualización, etc.) →n reto
distinto a generaciones anteriores.
BD relacionales proporcionan potencia y robustez, funcionalidad y
estandarización, pero necesitamos nuevas soluciones.
Cambio de enfoque: mientras que en BD relacionales prima la
atomicidad y consistencia de datos, en NoSQL se apuesta por la
escalabilidad y disponibilidad.
El modelo relacional implica muchas interrelaciones entre
entidades, dificultando distribución entre múltiples nodos servidores
→ barrera para la escalabilidad.
La necesidad de realizar joins sobre tablas con miles de millones
de registros → pérdida de eficiencia.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
37. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
NoSQL - Tipos
Clave-valor Forma mas tı́pica, como HashMap con cada elemento identificado por
una clave única. Muy eficientes para lecturas y escrituras, y escalan
fácilmente particionando los valores según su clave (e.g., clave entre 1 y
1000 a un servidor, 1001 a 2000 a otro, etc.) Ejemplos: Riak, Redis,
Voldemort, DynamoDB de Amazon.
Documentos Almacenan información como un documento (similar a JSON o XML) y
con una clave única. El fichero generado puede ser entendido, y el
servidor puede hacer operaciones con ellos. Varias implementaciones
permiten consultas muy avanzadas, y establecer relaciones sin joins.
Ejemplos: MongoDB, CouchDB.
Columnas Guardan los valores en columnas en lugar de filas. Ganamos mucha
velocidad en lecturas (al recuperar columnas concretas en lugar de toda
la tabla), pero ineficiente para realizar escrituras. Se usa en aplicaciones
con pocas escrituras en relación a las lecturas. Por ejemplo, Cassandra
de Facebook, BigTable de Google, SimpleDB de Amazon, HBase.
Grafos Almacenan información como grafos; las relaciones entre los nodos son
lo más importante. Útiles para representar información de redes sociales.
Más eficiente navegar entre estas relaciones, que pueden tener atributos,
que en modelo relacional. Aprovechables si la información a modo de
red. Ejemplo: Neo4j.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
38. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
39. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
MongoDB
SGBD multiplataforma NoSQL orientado a documentos, de
esquema libre (código abierto).
Cada registro se denomina documento.
Los documentos se pueden agrupar en colecciones (como las
tablas en una BD relacional, pero almacenando documentos
muy diferentes, sin esquema fijo).
Se pueden crear ı́ndices para atributos, manteniendo
estructura interna eficiente para el acceso a los mismos.
Destaca por su velocidad y su rico pero sencillo sistema de
consulta de los contenidos de la base de datos.
Buen equilibrio entre rendimiento y funcionalidad
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
40. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Formato de los datos
Los distintos documentos se almacenan en formato BSON,
o Binary JSON
Versión modificada y enriquecida de JSON que permite
búsquedas rápidas de datos.
Guarda de forma explı́cita longitudes de campos, ı́ndices de
arrays, y otra información útil para el escaneo de datos →
ocupa más espacio que JSON.
Conviene aprovechar el barato almacenamiento para
incrementar en velocidad de localización de información
dentro de un documento.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
41. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
JSON
El formato JSON está muy ampliamente extendido para
intercambio de información a través de web.
{
"name": "Alderaan",
"rotation_period": 24,
"diameter": 12500,
"climate": "temperate",
"terrain": "grasslands, mountains",
"population": 2000000000,
"residents": [
"https://swapi.co/api/people/5/",
"https://swapi.co/api/people/68/"
],
"films": [
"https://swapi.co/api/films/6/",
"https://swapi.co/api/films/1/"
],
"created": "2014-12-10T11:35:48.479000Z",
"edited": "2014-12-20T20:58:18.420000Z",
"url": "https://swapi.co/api/planets/2/"
}
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
42. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Tipos de valores en JSON
Lo anterior es un JSON Object. Pero no todo valor JSON es un objeto.
Veamos los tipos de valores en JSON5
:
JSON Object, caracterizado por sus llaves externas y las entradas para
cada dato, separadas por comas. Estas entradas tienen una serie de claves
cuyos valores pueden ser a su vez de cualquier tipo JSON
JSON Array, conteniendo una serie de valores JSON del mismo tipo
Cadenas (String)
Valores numéricos (Number)
Valores lógicos (Bool) → true o false
Valor nulo (Null) → null
Puede encontrar todo tipo de ejemplos en Internet, tanto de archivos json6
como de llamadas a API78
que devuelven los datos en este formato.
5
https://www.json.org/
6
http://json-schema.org/learn/miscellaneous-examples.html
7
https://jsonapi.org/examples/
8
https://github.com/endpoints/endpoints-example
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
43. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Descarga e instalación
MongoDB es multiplataforma, luego la instalación dependerá
de las caracterı́sticas del S.O. destino.
Además, hay versiones de 32 y 64 bits, y la versión actual de
MongoDB community edition es la 4.2.1.
Podemos descargarla en este enlace.
Existen también versiones de pago (Enterprise) y en la nube
(Atlas)
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
44. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Primeros pasos con servidor y cliente
El servidor de base de datos de MongoDB (contiene el SGDB)
se lanza como un servicio, o bien mediante el programa
ejecutable mongod.
Por ejemplo, en Windows vamos a la lı́nea de comandos
(sı́mbolo del sistema), navegamos hasta la carpeta bin dentro
de la carpeta mongodb, y tecleamos mongod, lanzando ası́ el
servidor.
El proceso para lanzar el cliente es muy similar. Abrimos otra
lı́nea de comandos, sin cerrar la del servidor, hacemos lo
mismo que antes, y en el último paso lanzamos mongo.
En ese momento estamos listos para lanzar órdenes contra la
base de datos.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
45. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Arrancando con la shell
Para ver las bases de datos disponibles en nuestro servidor
mongod, tecleamos show dbs.
Mediante db se nos devuelve la bd a la que estamos
conectados.
Podemos seleccionar una escribiendo: use mydb, de forma
que si no existe la base de datos mydb, ésta será creada
automáticamente. No es necesario una declaración explı́cita de
creación de la BD.
Se elimina una BD mediante db.dropDatabase().
Si necesitamos acudir a la ayuda del sistema para consultar
alguna funcionalidad podemos hacerlo mediante help, o a la
ayuda de una determinada función mediante
nombrefuncion.help().
Consultar la referencia del lenguaje para más detalle.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
46. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Índice
1 Introducción al mundo no relacional
2 Panorama actual
3 Cambio de escala
4 NoSQL
5 MongoDB
6 Getting started
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
47. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Colecciones
Una colección en MongoDB serı́a el equivalente a una tabla en
modelo relacional.
Podemos ver las existentes mediante show collections
Para crear una colección, no es necesario definir explı́citamente el
nombre de la colección y su estructura o esquema; se generará y
actualizará automáticamente conforme vayamos insertando
documentos.
Podemos añadir mediante db.cosas.insert({v : 27}).
También podrı́amos hacer asignar datos a una variable (mediante
Javascript), y posteriormente insertarla. Por ejemplo:
j = { name : "mongo" }
k = { x : 3, n : 5 }
db.cosas.insert( j )
db.cosas.insert( k )
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
48. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Consultas
Para realizar una consulta y poder ası́ ver los documentos
insertados, hacemos: db.cosas.find(), que devolverá todos los
documentos de la colección cosas.
Lo anterior devolverá los 3 registros introducidos, sin ningún criterio
de filtro establecido, de forma similar a la siguiente:
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "v" : 27 }
{ "_id" : ObjectId("4c2209f9f3924d31102bd84b"), "name" : "mongo" }
{ "_id" : ObjectId("4c2209fef3924d31102bd84c"), "x" : 3 , "n" : 5 }
También podrı́amos consultar documentos por algún criterio, como
por ejemplo haciendo: db.cosas.find( { name : "mongo"} ),
que devolverá el documento cuyo name sea igual a “mongo”.
Para devolver un único documento: db.cosas.findOne(). Y para
limitar el número: db.cosas.find().limit(3).
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
49. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Bucles e iteradores
Podemos escribir bucles de tipo for o while desde el cliente de
MongoDB. Por ejemplo, para añadir una serie de documentos en la
colección cosas:
for (var i = 1; i <= 20; i++) db.cosas.insert( { x : 4 , j : i } )
También podemos declarar un cursor en una variable, y recorrelo
con un iterador:
var c = db.cosas.find()
while ( c.hasNext() ) printjson( c.next() )
Esto mostrará un número máximo de documentos, por defecto 20,
si bien ese lı́mite se puede modificar; una vez mostrados los
primeros podremos escribir it para ver más documentos.
También podemos acceder a una posición del array de resultados al
que hace referencia la variable:
var c = db.cosas.find()
printjson( c [ 4 ] )
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales
50. Introducción Panorama actual Cambio de escala NoSQL MongoDB Getting started
Próximos pasos
Esta presentación proporciona únicamente una introducción a
NoSQL y MongoDB.
Encontraremos mucho más material en este curso completo
Prestaremos especial atención a tres aspectos:
• Uso básico del shell
• Importación de datos JSON a MongoDB
• Inserción de datos mediante insert.
• Consulta de documentos almacenados mediante find.
Luis Valencia Cabrera (lvalencia@us.es) Bases de Datos
Bases de datos no relacionales