Aprenda qué es MongoDB, la guía de instalación y el funcionamiento básico.

MongoDB NoSQL está más de moda que nunca. ¿Tiene los conocimientos necesarios al respecto?

No se preocupe si no es así, lo siguiente le ayudará.

Introducción

Con el cambio de paradigma de la web hacia el contenido dinámico, aumentó la demanda de bases de datos No-SQL. Esto dio lugar a numerosas bases de datos No-SQL como MongoDB.

mongodb

Clasificada como base de datos No-SQL, MongoDB es una base de datos basada en documentos que almacena los datos en forma de documentos JSON con una identificación autogenerada para cada documento.

Una base de datos No-SQL es una base de datos en la que la estructura de las tablas no es fija, a diferencia de las bases de datos SQL estructuradas. MongoDB almacena los datos en forma de cadena JSON independientemente del recuento de atributos o de los nombres de los atributos en una columna específica.

Esto permite a los desarrolladores realizar rápidamente cambios en las entidades sin necesidad de realizar cambios en el nivel de la base de datos.

Instalación de MongoDB

MongoDB, como cualquier otra base de datos, está disponible en múltiples variantes en función de las necesidades de desarrollo. Las variantes se han enumerado a continuación y pueden utilizarse o descargarse desde este enlace

  • MongoDB Atlas – Base de datos como servicio
  • Community Server – De uso gratuito para la comunidad de desarrolladores
  • MongoDB Enterprise Edition – La versión comercial con características adicionales

Cada una de ellas es totalmente compatible con todos los sistemas operativos. Para comenzar con la instalación de un servidor comunitario, descargue el archivo de instalación correspondiente a su sistema operativo.

El proceso de instalación difiere ligeramente para cada sistema operativo, por lo que repasaremos la instalación de cada sistema operativo por separado.

Instalación en MacOS

Para instalar MongoDB en MacOS. Descargue el archivo .tgz que contiene los binarios necesarios. Al desarchivar el archivo, debería poder ver un montón de binarios ubicados en la carpeta bin.

  • Mueva la carpeta bin a la ubicación deseada
  • Abra un terminal y cambie el directorio al directorio bin mencionado anteriormente
  • Ejecute el siguiente comando para crear una base de datos en la ubicación deseada.
$ ./mongod --dbpath /ruta-del-directorio-deseado/

En el comando anterior, sustituya la ruta al directorio por la ruta deseada y el servidor se iniciará en cuanto se ejecute el comando.

Instalación en Windows

El centro de descargas de MongoDB proporciona un paquete ejecutable .msi para instalar MongoDB en Windows. La instalación en Windows es bastante sencilla y puede realizarse mediante unos pocos comandos una vez descargada la configuración.

  • Ejecute los siguientes comandos para instalar MongoDB en Windows PC/servidor.
> cd /carpeta de instalación/
> msiexec.exe /q /i .msi ^
INSTALLLOCATION="C:Archivos de programaMongoDB" ^
ADDLOCAL="Herramientas de supervisión,Herramientas de importación y exportación,Herramientas varias"

Los comandos anteriores le llevarán al directorio correspondiente y ejecutarán la configuración para la instalación en la ubicación especificada. Una vez instalado, deberá configurar la ruta de almacenamiento de la base de datos por defecto para MongoDB.

El siguiente comando le ayudará a configurar la misma.

> md dbdata

El comando anterior crea una carpeta db/data en el directorio al que apunta actualmente el símbolo del sistema. En caso de que necesite volver a configurar la base de datos, podría utilizar mongod.exe con el argumento dbpath como se muestra a continuación:

>"C:Archivos de programaMongoDBbinmongod.exe" --dbpath d:tutorialmongodbdata

Instalación en Linux

De forma similar a las descargas para macOS, las variantes de MongoDB para Linux también están disponibles en forma de un montón de binarios archivados. El proceso para instalar MongoDB es bastante similar.

  • Mueva los binarios a la ubicación deseada
  • Abra el terminal en la carpeta
  • Ejecute el siguiente comando con la ubicación deseada de DB
$ ./mongod --dbpath /ruta-del-directorio-deseado/

Creación de la primera colección

MongoDB almacena los datos en forma de documentos JSON. Un grupo de tales documentos se conoce colectivamente como colección en MongoDB. Así, una colección es análoga a una tabla en una base de datos relacional, mientras que un documento es análogo a un registro.

Para almacenar documentos, primero necesitamos crear una colección. Lo interesante de una base de datos NoSQL es que, a diferencia de las bases de datos SQL, en ella no es necesario especificar los nombres de las columnas ni los tipos de datos.

El primer paso para crear una colección es crear una base de datos. Para crear una base de datos y conectarse a ella utilizando la línea de comandos, ejecute el siguiente comando desde el directorio de inicio de la instalación de MongoDB.

$ ./bin/mongo tutorial

Este comando se utiliza para iniciar la conexión a la base de datos y conectarse a la base de datos del tutorial simultáneamente. Mostrará un montón de líneas en el registro para indicar que la línea de comandos se ha conectado a la base de datos MongoDB.

Una imagen de ejemplo de la línea de comandos se ha mostrado a continuación para darle una mejor idea sobre la misma.

Screen-Shot-2018-05-22-at-9.07.12-PM

  • Para crear una colección, ejecute el siguiente comando:
$ > db.createCollection('primeraColección');

Así se crea una colección vacía. El siguiente paso es insertar datos y realizar algún procesamiento en los registros utilizando la línea de comandos de MongoDB.

Insertar un documento en la colección

Como se ha comentado anteriormente, es posible insertar casi cualquier JSON en cada colección de MongoDB.

Comencemos con la inserción del primer documento JSON en la colección firstCollection creada anteriormente.

> db.firstCollection.insertOne({nombre:'Abhishek',habilidad:'MongoDB'});

El comando anterior inserta un único documento JSON en la colección firstCollection. Se puede comprobar lo mismo utilizando el comando que se muestra a continuación:

> db.firstCollection.find();

El comando anterior tiene múltiples usos dependiendo de la variación de la función find(). Cuando no se especifican argumentos, como es el caso del comando anterior, obtiene todos los documentos disponibles de la colección.

Puede insertar un registro más e intentar lo mismo. Al hacerlo, la salida del comando anterior sería similar a la que se muestra a continuación:

> db.firstCollection.find();
{ "_id" : ObjectId("5b043a32c29a7184535e783a"), "name" : "Abhishek", "skill" : "MongoDB" }
{ "_id" : ObjectId("5b05b4f0c29a7184535e783b"), "name" : "GeekFlare", "skill" : "Java,MongoDB,NodeJS" }

Como puede verse, se muestran dos registros disponibles. La función find( ) podría utilizarse fácilmente para filtrar los documentos basándose en parámetros específicos. Filtremos el documento utilizando el atributo name.

El proceso de filtrado es sencillo, y podría entenderse a partir del siguiente comando:

db.firstCollection.find({nombre:'Abhishek'});
{ "_id" : ObjectId("5b043a32c29a7184535e783a")), "name" : "Abhishek", "skill" : "MongoDB" }

El filtro también puede utilizarse con múltiples atributos en el JSON. Aunque es posible añadir cualquier número de parámetros a la consulta, la limitación de este enfoque es que sólo coincide con el valor exacto de los atributos.

Filtrado de registros mediante Regex

Para ejecutar un equivalente en MongoDB de una cláusula similar en MySQL, MongoDB utiliza regex . Regex es una serie de caracteres que forman un patrón a comparar. Los literales regex son similares a los utilizados en Javascript.

Para la colección actual, intentaremos obtener los datos haciendo coincidir un patrón para el atributo de habilidad. El comando siguiente obtiene la lista de personas con la habilidad MongoDB. Así, obtendrá dos registros ya que ambos contienen la cadena MongoDB.

> db.firstCollection.find({habilidad:/.*MongoDB.*/});
{ "_id" : ObjectId("5b043a32c29a7184535e783a"), "name" : "Abhishek", "skill" : "MongoDB" }
{ "_id" : ObjectId("5b05b4f0c29a7184535e783b"), "name" : "GeekFlare", "skill" : "Java,MongoDB,NodeJS" }
> db.firstCollection.find({habilidad:/.*Java.*/});
{ "_id" : ObjectId("5b05b4f0c29a7184535e783b"), "name" : "GeekFlare", "skill" : "Java,MongoDB,NodeJS" }

El código anterior muestra el resultado de dos cadenas diferentes en forma regex. La primera consulta obtiene la lista de un documento en el que el atributo de habilidad contiene la palabra clave MongoDB, mientras que la otra sólo obtiene personas con habilidades en Java.

El siguiente reto en la consulta basada en criterios es consultar con una condición OR o AND.

Consultas complejas en MongoDB

Como se desprende de las órdenes anteriores, las cláusulas where de MongoDB funcionan sobre JSON. El proceso de combinar condiciones también depende del propio JSON. MongoDB proporciona operadores como $or, $and así como $not para realizar las operaciones de consulta pertinentes.

Intentemos obtener la lista de documentos en los que el atributo name contenga Abhishek o skill contenga Java.

> db.firstCollection.find({$or: [{nombre:'Abhishek'},{habilidad:/.*Java.*/}]});
{ "_id" : ObjectId("5b043a32c29a7184535e783a")), "name" : "Abhishek", "skill" : "MongoDB" }
{ "_id" : ObjectId("5b05b4f0c29a7184535e783b"), "name" : "Geekflare", "skill" : "Java,MongoDB,NodeJS" }

Como puede verse, obtiene ambos registros. Puede intentar utilizar el atributo name como Geekflare y ver el cambio. Sólo se mostrará el documento con tres habilidades y nombre Geekflare.

Del mismo modo, es posible utilizar el operador $and con una matriz JSON de condiciones como se muestra arriba.

Para el siguiente conjunto de operadores, necesitaríamos crear una colección más y añadir algunos registros a la misma utilizando los comandos que aparecen a continuación.

> db.createCollection('studentmarks');
{ "ok" : 1 }
> db.studentmarks.insertMany([{nombre:'A',notas:20},{nombre:'B',notas:25},{nombre:'C',notas:22},{nombre:'D',notas:30}]);
{
	"reconocido" : true
	"insertIds" : [
		ObjectId("5b06e7b5c29a7184535e783c"),
		ObjectId("5b06e7b5c29a7184535e783d"),
		ObjectId("5b06e7b5c29a7184535e783e"),
		ObjectId("5b06e7b5c29a7184535e783f")
	]
}

El siguiente conjunto de operadores que utilizaríamos son los operadores de comparación en la consulta. Para comparar valores utilizando criterios como menor que o mayor que o no igual a, utilizamos los operadores pertinentes en el valor que pasamos.

A continuación se muestra un ejemplo para obtener una lista de estudiantes con notas superiores a 22.

db.studentmarks.find({marcas:{$gt:22}});
{ "_id" : ObjectId("5b06e7b5c29a7184535e783d"), "name" : "B", "marks" : 25 }
{ "_id" : ObjectId("5b06e7b5c29a7184535e783f"), "name" : "D", "marks" : 30 }

El $gt indica aquí mayor que en los criterios. Así, se mostrarán los documentos con marcas superiores a 22. Del mismo modo, hay otros operadores que se pueden utilizar. Se enumeran a continuación.

Operador Utilización Ejemplo
$eq Comprueba si el valor es igual {marca:{$eq:20}}
$lt Comprueba si el valor es menor que {marca:{$lt:20}}
$gte Comprobar si el valor es mayor o igual que {marcas:{$gte:22}}
$lte Comprobar si el valor es menor o igual que {marks:{$lte:22}}
$ne Comprobar si el valor no es igual a {marks:{$ne:22}}
$in Comprobar si el valor es igual a cualquiera de los valores de la matriz {marks:{$in:[20,22]}}
$nin Comprobar si el valor no es igual a ninguno de los valores de la matriz {marks:{$nin:[22,25]}}

Explore más comandos de MongoDB aquí.

GUI para MongoDB

En la discusión anterior, hemos utilizado una línea de comandos para ejecutar nuestras consultas en MongoDB.

Utilizar la línea de comandos puede resultar complicado cuando se trata de consultas complejas y un gran volumen de datos. Para facilitar la visualización de los datos y la ejecución de las consultas, MongoDB pone a su disposición una excelente herramienta GUI llamada MongoDB Compass.

La brújula de MongoDB puede descargarse fácilmente desde el sitio de descargas de MongoDB. Una vez que haya descargado e instalado MongoDB Compass, inicie la aplicación y será recibido por una pantalla similar a la que se muestra a continuación.

MongoDBCompass

Teniendo en cuenta que ya tiene el servidor MongoDB en funcionamiento, haga clic en conectar con los datos predeterminados. Deberá iniciar sesión y se le mostrará la lista de bases de datos disponibles.

Haga clic en la base de datos tutorial para comprobar la lista de colecciones en la db tutorial. Como se muestra a continuación, aparece la lista de colecciones disponibles en la db tutorial.

Screen-Shot-2018-05-26-at-12.49.55-AM-e1527276073795

Al hacer clic en la colección, muestra la lista de documentos con los controles necesarios para filtrar los registros mediante un JSON, así como la posibilidad de ver los documentos en formato JSON o tabular según nos convenga.

La interfaz gráfica de usuario también simplifica la adición de un documento. Todo lo que hay que hacer es pulsar el botón Insertar documento en la pantalla que se muestra a continuación. Se abrirá un pequeño cuadro de diálogo solicitando los detalles del documento con un id de documento autogenerado.

MongoDBDocuments

La GUI simplifica muchas operaciones que podrían ser difíciles de realizar utilizando la interfaz de línea de comandos de MongoDB.

Hay más clientes NoSQL que puede explorar.

Conclusión

Captamos la esencia de NoSQL con una variedad de ejemplos y comprendimos la instalación, cómo los documentos son diferentes en comparación con un registro típico de una base de datos relacional. También puede consultar este curso en línea para aprender MongoDB desde cero.

Y, si usted es un desarrollador, entonces puede estar interesado en este otro.