Introducción al stack MEAN (5): Instalar MongoDB y uso de comandos básicos

MongoDB se ha dado a conocer como una base de datos sencilla de usar y que proporciona un alto rendimiento y alta disponibilidad. Ya hablamos de las virtudes de MongoDB en la introducción al StackMEAN (1).

Una alta disponibilidad en base de datos significa que los datos estén siempre accesibles. MongoDB lo logra gracias al uso de la replicación. Esto quiere decir que los datos estarán disponibles en más de un servidor a la vez, para que en el caso de que uno falle por cualquier motivo, los datos se puedan leer o escribir usando otro servidor.

En esta entrada vamos a hablar de cómo instalar MongoDB y cómo usarlo en nuestro entorno local de desarrollo, así tendremos MongoDB disponible para nuestras futuras aplicaciones.

Instalar MongoDB

 

¿Por qué nos beneficia usar MongoDB dentro del Stack MEAN?

Pues porque MongoDB es una base de datos NoSQL orientada a documentos (base de datos documental) y estos documentos son de tipo JSON, que tendrían la siguiente forma:

Las operaciones o consultas a los documentos las realizamos con JavaScript y se enviaran al lado del cliente en este formato JSON.

Recuerda que lo que mola del Stack MEAN es que todo se comunica con un solo lenguaje de programación: JavaScript.

Arquitectura del Stack MEAN

 

Desarrollamos el frontend (lado del cliente) con AngularJS, básicamente es lo que mostramos al usuario en su pantalla. AngularJS hace las llamadas al API REST (Post, Put, Get y Delete) construida con NodeJS y el framework express. Luego este API hace un CRUD (Create, Read, Update y Delete) a la base de datos en MongoDB, que a su vez da la respuesta obteniendo así el API los datos que se le han pedido en la llamada. Estos datos los envía el API a AngularJS (frontend) en formato JSON y se le mostrará al usuario sin necesidad de recargar la página, puesto que AngularJS mantiene los datos actualizados de la base de datos sin necesidad de actualizar la página web.

¡Ey espera!, ¿qué son las colecciones en MongoDB?

Ya que vamos a emplear el término colección repetidas veces, vamos aclararlo.

Las colecciones en MongoDB son algo parecido a las tablas en un modelo de base de datos entidad-relación. Son un grupo de documentos relacionados.

Como ya dijimos MongoDB es una base de datos orientada a documentos, y al contrario que las bases de datos relacionales, no es necesario seguir un esquema. Los documentos de una misma colección pueden tener esquemas diferentes.

Por ejemplo si tengo una colección llamada Hobbitsel documento puede almacenarse de la siguiente forma:

El código de arriba es el típico documento JSON, con sus strings, arrays, números y subdocumentos. En esa misma colección podemos guardar otro documento como este:

Este documento no sigue el mismo esquema que el primero ya que tiene menos campos, un campo nuevo que no existe en el documento anterior e incluso un mismo campo de distinto tipo (Amigos).

Esto es algo impensable en una base de datos relacional, pero es totalmente válido en MongoDB.

Aclarado esto, vamos con la letra «M» del stack MEAN, ¡a instalar MongoDB se ha dicho!

Instalar MongoDB localmente

Hay una serie de pasos que debes saber para usar MongoDB de forma local. Este proceso es el mismo para los diferentes sistemas operativos, aunque hay pequeños detalles que pueden variar. Los pasos a seguir son:

  1. Instalar MongoDB
  2. Crear una carpeta (con los permisos adecuados) para guardar la base de datos
  3. Ejecutar el servicio de MongoDB
  4. Conectar o usarlo en una aplicación después de que el servicio se haya iniciado

Vamos a explicar la instalación en Mac y Windows (el cómo hacerlo en Linux se puede ver en la documentación de MongoDB), y después exploraremos algunos comandos básicos que podemos usar en MongoDB.

Instalación en Mac

La carpeta por defecto en la instalación en Mac es /data/db. Aquí será donde guardaremos todo y debes asegurarte de tener permisos en esta carpeta para que MongoDB pueda escribir sobre ella.

Instalamos MongoDB en Mac usando Homebrew o de forma manual. En este artículo lo haremos con Homebrew, vamos a la terminal y ejecutamos los siguientes comandos:

Instalar mongodb en mac

 

El último comando puede llevar algo de tiempo.

Ahora nos aseguramos de que todo funciona escribiendo:

Esto iniciará el servicio de MongoDB, debería aparecerte «waiting for connections on port 27017» .

Si al ejecutar el comando de arriba ves algún error sobre los permisos, asegúrate de cambiarlos en tus carpetas /data/db con este comando : chmod -R 777 /data/db

Instalar MongoDB

Iniciando el servicio MongoDB

Una vez que tenemos el servicio MongoDB se ha iniciado, podemos conectarnos a él usando el comando:

Ejecuta el comando de arriba en un terminal aparte, ya que debemos tener en la anterior el servidor funcionando.

Conectándonos a MongoDB

Conectándonos a MongoDB desde el terminal

Ahora deberías ver cómo mongo se conecta a un servicio mongod en el puerto 27017 de nuestro localhost (es el que tiene asignado por defecto).

 

Instalación en Windows

Instalar MongoDB en Windows es bastante sencillo. Primero descárgate MongoDB aquí. Una vez descargado e instalado (siguiente, marca instalación Completa, siguiente) debes añadir la ruta del ejecutable de MongoDB a tu PATH (variable de sistema). Ya sabes que esto se hace para poder ejecutar Mongo en consola sin tener que escribir la ruta completa hasta el ejecutable.

Para añadir mongodb a tu PATH vamos a Inicio > Equipo > Propiedades del Sistema > pestaña Opciones avanzadas.

Haz click en Variables de entorno, y marca la variable PATH. Dale a Editar, escribe ‘;’ y tras eso la ruta de tu ejecutable de Mongo, en mi caso C:\Program Files\MongoDB\Server\3.0\bin. Acepta varias veces y listo.

instalar mongodb en windows

Variable de entorno de MongoDB

Ahora deberías poder ejecutar:

en tu consola. Un error habitual que puede darte es «Data directory C:\data\db no found...» , ya sabes, ve a C:\ y crea ese directorio. Ahí es donde se almacenarán los datos (C:\data\db).

Si quieres especificar una ruta diferente a la que hay por defecto, data/db, puedes pasarle otra ruta escribiendo:

Una vez creadas esas carpetas y con el PATH correcto, inicia mongo en consola con el comando ‘mongod‘ y deberías ver «waiting for connections on port 27017»:

Instalar mongodb en windows

Iniciando MongoDB

 

Ya puedes conectarte a la base de datos y ejecutar algunos comandos. Importante: Asegúrate de dejar mongod funcionando en una consola y abre otra nueva y escribe mongo para conectarte y probar estos comandos.

Comandos básicos de MongoDB

Las consultas en un sistema de base de datos documental son un poco diferentes a lo que estamos acostumbrados. En lugar de hacer consultas para datos insertados en tablas, vamos hacer consultas a colecciones de documentos.

Recuerda que todo se guarda en documentos con formato JSON (bueno, más bien se guardan en BSON, que es una forma de representar binariamente objetos JSON).

Una vez nos hemos conectado a nuestra instancia de MongoDB usando mongod y mongo posteriormente en otra consola, podemos empezar a ver las bases de datos disponibles y su uso. He aquí los comandos más básicos.

Listar todas las Bases de Datos

Comandos mongodb

 

Crear Base de Datos

En MongoDB no se crea una Base de Datos por comandos. No existen métodos estilo createDB o createDataBase…

MongoDB crea la base de datos en el instante que insertamos información en esa base de datos, es decir, cuando insertamos un elemento dentro de una colección.

La gracia es que no tienes que preocuparte de crear explícitamente la base de datos, basta con crear una colección y los documentos, y listo.

Un poco más abajo veremos como crear colecciones y documentos con las operaciones CRUD básicas.

Mostrar la Base de Datos actual

Comandos básicos MongoDB

Seleccionar una Base de Datos

Comandos básicos MongoDB

 

Ahora que sabemos los comandos básicos, vamos con las operaciones CRUD principales.

Comandos / Operaciones CRUD en MongoDB

CRUD es el acrónimo de Create, Read, UpdateDelete y representa las 4 operaciones básicas que se pueden realizar en cualquier sistema de base de datos: Crear registros, leerlos o buscarlos, actualizarlos y eliminarlos.

Ya verás que estos comandos CRUD en MongoDB serán similares a los comandos que usaremos para controlar las operaciones CRUD de nuestras aplicaciones con Nodejs.

Para estas operaciones usaremos claro está, JSON. Mientras que por debajo, para el almacenamiento y transferencia, MongoDB usa BSON.

Create / Crear

Haciendo esto guardamos un documento dentro de la colección Hobbits en la base de datos actual en las que estás situado.

Si todo ha salido bien habrás creado tanto la base de datos como la colección que no existían.

Operaciones CRUD con Mongodb

Read / Buscar

Update / Actualizar

Delete / Borrar

Esto ha sido un breve resumen de los comandos que puedes ejecutar. La documentación de MongoDB es muy amplia y ofrece muchos detalles para aquellos que quieran profundizar más.

Mongo ofrece también un excelente certificado profesional para que además puedas iniciarte con los comandos.

MongoDB y su interfaz Robomongo

Si bien es bastante sencillo acceder a nuestras bases de datos a través de la consola, también hay disponible una herramienta que nos da una interfaz de usuario para MongoDB (para aquellos que prefieren las GUI).

Descárgate Robomongo y vamos a darle caña.

Crear una conexión a nuestra base de datos es muy sencillo. Simplemente dale a Create y añade como dirección localhost y como puerto el 27017. Nombra tu conexión como te plazca.

Interfaz Robomongo para MongoDB

Conectándonos a la base de datos con Robomongo

Una vez conectado tendrás acceso a todas las bases de datos y sus respectivas colecciones. Ahora tienes una GUI(graphical user interface) para manejar las operaciones de la base de datos.

Robomongo conectado a la base de datos

Robomongo conectado a la base de datos

 

Usando MongoDB en una aplicación Node.js

Como has comprobado, usar una instancia local de MongoDB es un proceso bastante sencillo.

Pero ya es hora de que utilicemos mongooseJS, el package de Node que sirve para trabajar con MongoDB.

Todo lo que tienes que hacer es configurar mongoose para conectarlo a la base de datos local. Es muy simple ya que ni siquiera necesitamos crear la base de datos.

Antes de nada nos asegurarnos que MongoDB se inicia ejecutando el comando mongod (como ya hicimos antes):

Conectándonos a una base de datos MongoDB usando Mongoose

He aquí un ejemplo de código para conectarse a una base de datos en Node, primero instalamos el paquete Mongoose:

Ahora escribimos el siguiente comando para ejecutar node.js y así poder utilizarlo:

Cogemos los paquetes que necesitamos:

Y por último creamos la conexión a una base de datos, ¡la que tú quieras!, no tiene ni por qué existir:

En mi caso me he inventado una base de datos de Marvel:

Conectar base de datos con Mongoose

 

¡Esto es todo!, recuerda que la base de datos se creará automáticamente una vez empieces a guardar documentos en ella.

Ya que tenemos nociones de MongoDB y cómo usarlo, vamos a implementar CRUD y a usar MongoDB con MongooseJS dentro de una aplicación Node.js.

En el próximo tutorial montaremos una API REST usando Node.JS. ¡Nos vemos hasta entonces! 😀

14 Comentarios

  1. Sam 13 agosto, 2015 Responder
  2. Luis 3 septiembre, 2015 Responder
  3. mila 29 febrero, 2016 Responder
  4. max pawel 3 abril, 2016 Responder
  5. Hans 11 abril, 2016 Responder
  6. Carlos 28 abril, 2016 Responder
  7. Luis 11 mayo, 2016 Responder
  8. Osvaldo 16 mayo, 2016 Responder
  9. Jose 26 mayo, 2016 Responder
  10. max pawel 6 junio, 2016 Responder
  11. erik weisz 18 agosto, 2016 Responder
  12. carlos 18 octubre, 2016 Responder
  13. Daniel 18 septiembre, 2017 Responder
  14. Adán Tiago Rodríguez 31 diciembre, 2017 Responder

Añadir un comentario

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