Introducción práctica a MongoDB sin conocimientos de NoSQL

MongoDB es una de las tecnologías de bases de datos más comentadas en los últimos meses. Se trata de una base de datos NoSQL que está ofreciendo un gran potencial para el almacenamiento rápido y continuo de muchos datos, como podrían ser las publicaciones de una red social o las búsquedas que se realizan en un navegador. En este artículo voy a intentar explicar de la mejor forma que pueda qué es una base de datos NoSQL y cómo utilizar MongoDB desde la terminal o consola de comandos de nuestro sistema operativo.

Antes de nada, avisar que asumo conocimientos vuestros básicos sobre bases de datos, que sabéis qué son y cuáles son las principales operaciones que podéis ejecutar sobre la misma.

Qué es una base de datos NoSQL

A pesar de lo que muchos otros piensan NoSQL significa Not Only SQL, es decir, no siempre usaremos SQL para tratar datos en nuestra base de datos. Esto significa un cambio brutal respecto a las bases de datos SQL cuyas consultas se hacían de forma íntegra en lenguajes de tipo SQL. En el canso de MongoDB, podréis ver como usaremos JavaScript para ejecutar las diferentes operaciones, pero no nos adelantemos.

Estas bases de datos escalan muy bien horizontalmente y son muy eficientes para buscar y agregar nuevos datos, por lo que se están convirtiendo en un verdadero referente para empresas que necesitan tratar una gran cantidad de datos por segundo. No obstante, la mayoría de estas tecnologías son de código abierto, como MongoDB, y no tienen la seguridad de que una gran empresa como Microsoft o Oracle esté detrás dando el soporte que necesita.

Qué caracteriza a MongoDB

MongoDB viene del inglés homongous, que significa enorme. Esto ya da una idea de que está destinado a almacenar grandes cantidades de datos sin perder eficiencia. Por lo demás, es una base de datos NoSQL orientado a documentos, los cuales los explicaremos más adelante. También es de código abierto, el cual podéis encontrar en su GitHub.

Cómo se estructura una base de datos de MongoDB

Bien, el elemento más atómico de MongoDB son los pares de clave-valor los cuales poseen la información que queremos almacenar. Estos pares de clave valor, forman un objeto de JavaScript, lo que denominamos un JSON, pero este objeto de JavaScript, en MongoDB se le llama documento. Si por ejemplo estamos tratando datos sobre personas, un documento sería toda la información que se relaciona con esa persona: nombre, apellidos, dirección postal, empleo, etc. Estos documentos se traducen posteriormente a BSON, el formato de JSON en binario, lo que facilita las posteriores búsquedas.

Los diferentes documentos se organizan en colecciones las cuales se pueden comparar con las tablas de lenguajes SQL. Una colección no es más que un conjunto de documentos que tienen un fin similar, aunque no tienen porqué estar compuestos por las mismas claves.

A diferencia de otro tipo de bases de datos como son las relacionales, aquí no existen relaciones ninguna. Es decir, si estás hablando de un pedido, tenemos que colocar aquí toda la información referente al pedido, incluso la dirección o el número de teléfono del cliente, que en otras bases de datos, iría en una colección o tabla diferente. Veámoslo más claro con el siguiente dibujo:

Por último, estas colecciones se agrupan bajo una misma base de datos, por lo que el esquema genera nos quedaría algo así: Base de datos > Colecciones > Documentos

Cómo instalar MongoDB

La instalación de MongoDB depende del sistema operativo en el que te encuentres. Para evitar dedicar más palabras de las necesarias en este artículo, os dejo algunos enlaces para preparar MongoDB en vuestro ordenador según vuestro sistema operativo:

Shell de MongoDB

Vale ya tenemos todo preparado para comenzar a aprender Mongo. Lo primero que tendremos que hacer es iniciar el servidor de Mongo por un lado y por otro el shell, que será el que usaremos para trabajar con la base de datos. Si está todo configurado, ejecutamos los siguientes comandos en diferentes terminales:

Si todo sale bien, tendremos algo tal que así en nuestra terminal:

Bien, ya podemos trabajar con el shell de Mongo, el cual está basado en JavaScript, por lo que podéis ejecutar cualquier orden que os plazca, crear funciones e incluso usar estas funciones. Por ejemplo:

Bases de datos: listar, usar, crear

El comando cls os ayudará a limpiar todo lo que tenéis en pantalla para poder trabajar más a gusto. No obstante, aquí no hemos venido a programar en JS, si no a iniciarnos en Mongo. El primer comando que usaremos será para ver en qué base de datos nos encontramos actualmente:

Pese a lo raro que pueda parecer, este comando nos arroja un resultado, la base denominada test. Esta es una base de datos que todavía no está creada como tal, pero en la que Mongo nos mete nada más iniciar el shell. Como veis, podemos estar en una base de datos aunque no la tengamos creada y en el momento en el que introduzcamos algún dato, se creará automáticamente.

Para poder ver las bases de datos que tenemos creadas, usaremos el siguiente comando:

Para sorpresa de muchos, nos aparecen 3 bases diferentes, pero ninguna es la test en la que actualmente estamos. Como ya hemos dicho, aunque «estemos dentro» de la base de datos, aun no está creada porque no hemos introducido ningún documento o colección.

Para poder usar otra base de datos distinta usaremos este comando:

Podemos usar bases tanto que aparezcan en la lista anterior, como otras que todavía no están creadas pero tenemos pensado hacerlo.

Colecciones: crear y mostrar

Bien, toca crear nuestra primera base de datos en Mongo y como he dicho antes es añadiendo algún dato o colección. Empezemos creando una colección, los «lugares» donde se almacenaran los documentos posteriormente.

Como podéis ver, si vemos ahora la lista de bases de datos que hemos creado, estará entre ellas la base de datos nuevaBD porque hemos creado implícitamente una colección. Para ver las colecciones creadas hasta el momento en la base de datos utilizamos …

También podemos crear implícitamente un documento dentro de una colección que aun no existe y de esta formase crearán tanto la base de datos, la colección y el documento, así que veamos cómo crear un nuevo documento.

Documentos: insertar, buscar, actualizar y borrar

Para crear un documento, tenemos que utilizar el siguiente comando:

Dentro de la función, añadimos en JSON el objeto o documento que queremos añadir a la colección. De esta forma, podemos insertar todos los documentos que queramos con los atributos que se nos vayan ocurriendo. Otra forma, es diseñando el objeto de JSON en un editor de código, copiarlo y pegarlo para que sea mucha más sencilla su escritura. Aquí tenéis algunos ejemplos:

Una diferencia con JSON, es que no es necesario que coloquemos entre comillas («») los nombres de las propiedades, pero se pueden colocar perfectamente, Mongo entiende ambas formas por igual.

Bien, ahora vamos a ver como mostrar todos los documentos que hemos ido creando en nuestra colección:

Como resultado, tendremos algo similar a esto:

Conclusiones que podemos sacar de este resultado:

  • Cada documento recibe un identificados («_id») que es único para cada uno y que se genera a través de un algoritmo.
  • Las propiedades se auto-completan con las comillas («») aunque no las hayamos puesto al insertar el documento.

Bien, pero ¿qué pasa si sólo queremos seleccionar los documentos que cumplan un valor en una de sus propiedades? Pues tenemos que seguir usando JSON para crear condiciones a la hora de hacer una búsqueda. Aquí tenéis algunos ejemplos:

El resultado de algunas de las operaciones anteriores:

Existen muchas más formas de poder buscar datos en MongoDB y puede que pronto haga un artículo sobre ello, pero esto es una introducción, así que me vale con que sepáis cómo hacer unas búsquedas básicas.

A continuación de las búsquedas, vamos a ver cómo actualizar documentos, aunque esta acción no es una de las más utilizadas en MongoDB. Recordamos que las operaciones más eficientes son la de insercción y la de búsqueda, pero de todas formas, hay maneras de poder actualizar documentos de una colección.

Si no utilizamos el método $set, se sustituirán todo los datos del primer documento que encuentre con el apellido Martinez por los nuevos que hemos estipulado. Utilizándolo, Mongo comprueba si dicha propiedad existe o no, si no existe la crea y coloca el nuevo valor, si existe actualiza el valor por el nuevo.

Por último, veamos cómo borrar documentos de una colección, lo cual se hace de forma muy similar a buscar un dato:

Colocamos dentro de la función en un objeto JSON (como para las búsquedas) aquellas propiedades con los valores en los que cuando haga «match», se eliminará el documento:

Eliminar colecciones y bases de datos

Por último, vamos a aprender cómo eliminar tanto la colección como la base de datos que hemos creado durante todo el artículo. Para empezar, cómo borrar una colección:

Automáticamente, todos los documentos que conformaban la colección, han sido eliminados. Si queremos seguir eliminando, de esta forma se puede borrar una base de datos:

El resultado de ejecutar todas estas operaciones es el siguiente:

 

Y hasta aquí la introducción a MongoDB. Como podéis ver, es una forma diferente de entender las bases de datos, mucho más destinadas a insertar elementos con gran fluidez y gran flexibilidad horizontal. Si queréis, puedo explicar en otro artículo algunos aspectos más avanzados sobre Mongo, como las condiciones de las consultas o nuevos comandos que podemos usar en el shell.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *