Tutoriales anteriores de nuestro proyecto:
- Introducción: Mean Stack
- Guia tutorial Node.JS
- Guia-tutoria Express
- Guia-tutorial MongoDB
- Desarrollando nuestro proyecto
MongoDB
MongoDB es un motor de bases de datos documental de código abierto que ofrece un gran rendimiento y escalabilidad. Las bases de datos documentales como MongoDB, prescinden de los complejos esquemas de las bases de datos relacionales tradicionales, sacrificando esta integridad referencial por un rendimiento, escalabilidad y facilidad de desarrollo.
En MongoDB no hay tablas, filas y campos, sólo documentos. Estos tienen índices pero estos documentos son independientes entre sí y contienen toda la información necesaria del objeto que representan.
Los documentos de MongoDB son similares a los objetos JSON. Siguiendo con nuestro proyecto de la guia-tutorial de Express:
{
“_id” : ObjectId(“78f780954b7c8ea31de89e9”), “direccion” : {
“calle” : “Serrano”, “zipcode” : “28020”, “edificio” : “3”,
“coord” : [ -3.12342, 40.52422 ]
},
“habitaciones” : 4,
“garaje” : “Si”, “precios” : [
{“date” : ISODate(“2017-10-01T00:00:00Z”), “valor” : 490000
“modalidad” : “Venta”
},
{“date” : ISODate(“2017-01-16T00:00:00Z”), “valor” : “1500”,
“modalidad” : “Alquiler”}
],
“cliente_id” : “194929”, “inmueble_id” : “184722”
}
MongoDB almacena documentos en colecciones. Las colecciones son un concepto similar a las tablas en las bases de datos relacionales. De hecho, para ser almacenados en colecciones, los documentos deben tener un campo único _id que actúa a modo de clave primaria.
Vamos a instalar MongoDB Community Edition en Linux Ubuntu 14.04:
Primer paso: Importamos la clave pública del repositorio
#:> sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 0C49F3730359A14518585931BC711F9BA15703C6
Una vez importada la clave, vamos:
#:> echo “deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
Esto nos añadirá el repositorio de mongodb-org a nuestros orígenes de software. Ahora debemos ejecutar apt-get update para actualizar este nuevo repositorio.
#:> sudo apt-get update
Una vez hecho esto, instalamos con
#:> sudo apt-get install -y mongodb-org
A estas alturas, ya deberíamos tener el daemon de MongoDB corriendo en el sistema, pero si no es así, levanta el servicio con:
#:> sudo service mongod start
La instancia de MongoDB, almacena sus datos en /var/lib/mongodb y los logs se pueden encontrar en /var/log/mongodb por defecto. El servicio corre con la cuenta de usuario mongodb.
Para verificar que el servicio se ha iniciado sin incidencias, podemos echar un vistazo a /var/log/mongodb/mongod.log donde deberíamos tener una última línea como esta:
NETWORK [thread1] waiting for connections on port 27017
El Puerto por defecto en el que escucha MongoDB es el 27017
Para parar y reiniciar el servicio, podemos usar la orden service mongod stop y service mongod restart respectivamente.
Vamos a descargar un dataset de ejemplo y lo vamos a importar en una base de datos de nuestra instancia. Para ello desde el terminal y desde el direcotrio de nuestro nuevo proyecto nodejs-express:
#:> wget -qO- https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json >> dataset.json
Con wget obtenemos el recurso remoto y lo redirigimos a un fichero dataset.json en el directorio actual.
Asegúrate que no tienes ya una instancia de MongoDB con una base de datos test, ya que el siguiente comando importará todos los registros del fichero en la base de datos “test” y primero vaciará dicha base datos antes de insertar los registros:
#:> mongoimport –db test –collection restaurants –drop –file dataset.json
El resultado se puede ver en la siguiente imagen:
Ahora vamos a abrir la consola de mongo para poder hacer solicitudes a nuestras bases de datos y documentos.
Para ello, desde la consola, tecleamos:
#:> mongo
Veremos que después de una serie de mensajes de inicialización, nos aparece un prompt. Aquí podemos teclear help para ver ayuda sobre los comandos que admite nuestro mongo Shell.
La Shell de mongo tiene una serie de helpers para poder realizar las operaciones más frecuentes. Este es el modo interactivo, pero existe también el modo Script. Ambos pueden ser utilizados desde la Shell, aunque los helper son mucho más rápidos de usar. Pero los helpers no pueden ser usados dentro de un script. AL contrario, la Shell sí que admite comandos de script.
Con la mongo Shell abierta, vamos a realizar algunas operaciones sencillas de uno y otro modo, con helpers, Shell mode:
> show dbs Resultado:
admin 0.000GB
local 0.000GB
test 0.005GB
Con JavaScript:
> conn = new Mongo();
> db = conn.getDB(“test”);
> adminCommand(‘listDatabases’)
Resultado:
{
“databases” : [
{
“name” : “admin”, “sizeOnDisk” : 49152, “empty” : false
},
{
“name” : “local”, “sizeOnDisk” : 32768, “empty” : false
},
{
“name” : “test”, “sizeOnDisk” : 4890624, “empty” : false
}
],
“totalSize” : 4972544, “ok” : 1
}
Con helpers, Shell mode, nos conectamos la base de datos test:
> use test
Resultado: test
Con JavaScript:
> db.getSiblingDB(‘test’)
Resultado: test
Como vemos, podemos realizar operaciones desde nuestro programa o desde la shell de mongo, usando Javascript en el primer caso y tanto helpers como Javascript en el segundo.
Si te ha parecido interesante este tutorial, ¡no dudes en compartirlo en las redes sociales! Desde Digital Tech Institute, te formamos en Full Stack Development para hacerte avanzar en tu carrera profesional, ¡No dejes de aprender!