Successfully reported this slideshow.
Your SlideShare is downloading. ×

BD-Tema-7.pdf

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 50 Ad

More Related Content

Similar to BD-Tema-7.pdf (20)

Advertisement

BD-Tema-7.pdf

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

×