{"id":1181,"date":"2024-07-31T11:44:11","date_gmt":"2024-07-31T09:44:11","guid":{"rendered":"https:\/\/blog.sutilweb.eu\/?page_id=1181"},"modified":"2024-07-31T11:45:20","modified_gmt":"2024-07-31T09:45:20","slug":"07-bds-orientadas-a-documentos","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/databases\/nosql\/07-bds-orientadas-a-documentos\/","title":{"rendered":"07. BDs orientadas a documentos"},"content":{"rendered":"\n<p>Un <strong>documento<\/strong> es una especie de un objeto <strong>Javascript.<\/strong> Lo que viene a ser la <strong>tabla<\/strong> en <strong>bases de datos documentales<\/strong> se llaman <strong>colecciones.<\/strong> Estas <strong>bases de datos<\/strong> est\u00e1n dise\u00f1adas para almacenar, recuperar y gestionar grandes cantidades de informaci\u00f3n en formato <strong>documento.<\/strong> El <strong>documento<\/strong> es <strong><em>la unidad m\u00ednima de datos autocontenido<\/em><\/strong>. Puede variar la densidad de la informaci\u00f3n, es decir, el n\u00famero de <strong>propiedades<\/strong> o de <strong>campos,<\/strong> si lo queremos comparar con <strong>SQL,<\/strong> que puede haber de un documento a otro. Por ejm, podemos pedir diferentes tipos de tlfo, puede ser un tlfo de casa, de oficina, m\u00f3vil&#8230; en una tabla, de forma estricta tenemos que definir esos campos, en una <strong>base documental,<\/strong> de un <strong>documento<\/strong> a otro puede que tenga todos los tlfos, o uno, o dos&#8230; Tienen esta flexibilidad.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Caracter\u00edsticas<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Modelo basado en documentos<\/strong>: es la estructura de colecciones en formato <strong>JSON<\/strong> o <strong>BZON.<\/strong> En un objeto <strong>JSON<\/strong> s\u00f3lo podemos meter contenido textual, en cambio, al tener un formato <strong>BZON (Binary JSON)<\/strong> podemos agregar otro tipo de objetos binarios, como puede ser una imagen, documento PDF, un video&#8230;<\/li>\n\n\n\n<li>Las <strong>consultas<\/strong> y las <strong>b\u00fasquedas<\/strong> van a ser m\u00e1s eficientes ya que no son tan complejas.<\/li>\n\n\n\n<li>Integraci\u00f3n con los diferentes <strong>lenguajes de programaci\u00f3n<\/strong> y <strong>frameworks.<\/strong><\/li>\n\n\n\n<li>Son las <strong>bases de datos NoSQL<\/strong> por referencia, las m\u00e1s conocidas, aunque ya existen m\u00e1s tipos de bases de datos NoSQL.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Aplicaciones<\/h2>\n\n\n\n<p>Adem\u00e1s de <strong>MongoDB<\/strong> tenemos <strong>CauchDB, Apache Couch, Amazon Document<\/strong>&nbsp;<strong>DB,<\/strong> Firebase&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Usos<\/h2>\n\n\n\n<p>Otro de los usos de estas <strong>bases documentales<\/strong> es para el desarrollo de <strong>aplicaciones web<\/strong> y <strong>m\u00f3viles<\/strong>, <strong>sistemas de gesti\u00f3n de contenidos<\/strong>&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">MongoDB<\/h2>\n\n\n\n<p>En este cap\u00edtulo trabajaremos con la base de datos por referencia en bases de datos documentales, se trata de <strong>MongoDB,<\/strong> que es el gestor de bases de datos documentales m\u00e1s popular. Fue el primero que naci\u00f3, sobre el a\u00f1o 2009.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Caracter\u00edsticas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tiene una alta <strong>flexibilidad.<\/strong><\/li>\n\n\n\n<li>Tiene una alta <strong>escalabilidad.<\/strong><\/li>\n\n\n\n<li>Las consultas suelen ser muy eficientes.<\/li>\n\n\n\n<li>Al poder escalar de forma horizontal permite tener alta disponibilidad y replicaci\u00f3n.<\/li>\n\n\n\n<li>Escalabilidad geogr\u00e1fica.<\/li>\n\n\n\n<li>Integraci\u00f3n con otros tipos de lenguajes de desarrollo.<\/li>\n<\/ul>\n\n\n\n<p>Su p\u00e1gina oficial es <a href=\"https:\/\/www.mongodb.com\/es\/cloud\/atlas\/lp\/try4\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>https:\/\/www.mongodb.com\/es\/cloud\/atlas\/lp\/try4<\/strong><\/a>, y tiene una versi\u00f3n gratuita. Para manejar esta <strong>base de datos<\/strong> tenemos que crearnos una cuenta. Podemos trabajar con <strong>MongoDB<\/strong> de forma local o en la nube, aunque se le saca mayor provecho si se trabaja con ella en la nube.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ejercicio con MongoDB<\/h2>\n\n\n\n<p>Vamos a hacer un ejercicio completo para ver la sintaxis de las bases de datos documentales mediante <strong>MongoDB.<\/strong><\/p>\n\n\n\n<p><strong>Sintaxis<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">-- Comandos\n\n-- Mostrar las bases de datos\nshow dbs\n\n-- Indicar que base de datos vamos a utilizar\nuse db_name\n\n-- Crear una colecci\u00f3n de libros\n{\n_id: ObjectId(\"123123\"),\ntitle: 'Libro 1',\nauthor: 'Autor 1',\npublishedYear: 1984,\ngenres: ['Ficci\u00f3n','Cl\u00e1sico'],\nprice: 12.99\n}\n\n-- CRUD\ndb.books.insertOne({\ntitle: 'Nuevo libro',\nauthor: 'Autor 2',\npublishedYear: 1888,\ngenres: ['Policiaca','Ciencia Ficci\u00f3n'],\nprice: 11\n})\ndb.books.find()\ndb.books.findOne({title: 'Libro 1'})\ndb.books.updateOne({title: 'Libro 1'}, {$set {price: 15}})\ndb.books.deleteOne({title: 'libro 1'})\n\n-- Para insertar varias colecciones, en vez de insertOne() se usa la funci\u00f3n\n-- insertMany(array que vamos a insertar)<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Un documento es una especie de un objeto Javascript. Lo que viene a ser la tabla en bases de datos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1165,"menu_order":6,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1181","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"Un documento es una especie de un objeto Javascript. Lo que viene a ser la tabla en bases de datos [&hellip;]","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=1181"}],"version-history":[{"count":1,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1181\/revisions"}],"predecessor-version":[{"id":1182,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1181\/revisions\/1182"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1165"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=1181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}