Primeros pasos con MongoDB

Primeros pasos con MongoDB

Actualmente, MongoDB es una de las bases de datos más populares, siendo así el NoSQL (Not Only SQL) más famoso del mercado actual. MongoDB está escrito en lenguaje C++, está formado por un conjunto de aplicaciones JSON y sigue siendo de código abierto con licencia GNU AGPL (Affero General Public License).

Creada por la empresa 10gen, actualmente conocida como MongoDB Inc, es una base de datos orientada a documentos que almacena datos en documentos JSON con esquema dinámico. Esto significa que puede almacenar sus registros sin preocuparse por la estructura de datos. Los documentos MongoDB son similares a los objetos JSON.

Al ser una base de datos multiplataforma, puede ejecutarse en muchos sistemas operativos diferentes: Windows, Mac OS, Linux. Este tipo de base de datos no utiliza las ideas del modelo de base de datos relacional o el lenguaje SQL.

Entre las empresas que ya utilizan MongoDB se destacan Globo.com, MailBox (servicio de correo electrónico DropBox), LinkedIn, MTV, Square Enix, Adobe y muchas otras. Aquí se enumeran los servicios en producción que usan MongoDB.

Instalación de MongoDB


Para instalar MongoDB, primero debemos descargarlo aquí, luego deberás crear una cuenta en el sitio y elegir una versión del sistema operativo de tu elección. En este caso, utilizaremos Windows.

Descarga MongoDB Community Server y MongoDB Database Tools, utilizados para importar y exportar bases de datos.

Una vez instalado, ya podemos ejecutar el cliente MongoDB Shell. A través de este Shell será posible iniciar su base de datos. Si tiene alguna pregunta, simplemente use el comando de ayuda en MongoDB Shell.

De manera predeterminada, la base de datos en el Shell de MongoDB se conecta a la base de datos predeterminada:

Después de escribir el comando mongo, se conecta al servidor MongoDB y se ve así:

Ahora estamos conectados a MongoDB y podemos usarlo.

Para crear una nueva base de datos, debes insertar el comando useBaseDeData para hacer nuestras inserciones y listados. Ve el ejemplo:

Si la base de datos aún no existe, MongoDB la creará tan pronto como los datos comiencen a recibirse, siempre recordando que la Shell debe presentar el mensaje cambiado a db “nomeDoSeuBanco” (nombre de tu base, en español).

Primeros pasos con MongoDB


Después de realizar el paso a paso anterior, también usaremos MongoDB Compass para ver la base de datos creada.

Nota que en la esquina izquierda ya figura nuestro banco creado. Ahora realizaremos nuestra primera entrada de datos:

Cuando usamos la línea de comando anterior en MongoSH, podemos ver lo siguiente:

Ten en cuenta que se creó la carpeta name se creó, así como la inserción de claves y valores agregados a través de la línea de comando.

Nota que la inserción fue exitosa. Vayamos a algunos ejemplos más.

Entendiendo los usos de MongoDB


La sintaxis utilizada por MongoDB es JSON, que utiliza pares clave/valor como estándar para la retención de datos, como se muestra en el siguiente ejemplo, donde agregaremos un usuario a una base de datos de nombres:

De esta forma, tendremos:

¡Mira cuán sencillo es usarlo! Si tuviéramos que insertar la misma forma en una base de datos SQL, tendríamos:

Y aún no seríamos capaces de insertar los datos en la base porque sería necesario crear un INSERT para agregar la información referente al usuario.

Utilizando otro tipo de inserción, tendríamos el siguiente ejemplo:

Usando una estructura más compleja para insertar datos en una base de datos MongoDB, tendríamos el ejemplo anterior.

Considera que utilicé una clave de dirección para almacenar más de un valor de dirección. Después de ejecutar el comando anterior, tendremos el siguiente documento en MongoDB Compass:

Listo. Se ha creado una nueva clave de dirección que tiene más de un atributo. Con eso en mente, podríamos crear inserciones más complejas, como:

Como se mencionó anteriormente, en MongoDB Compass tendremos la siguiente adición de datos:

Checa cómo se hace la adición para que veamos que no hay reglas de validación muy estrictas, por lo que podemos almacenar cualquier tipo de documento en la base de datos. Otro punto interesante es que si se necesita agregar un nuevo atributo solo en el documento donde se necesita, podemos hacerlo sin problemas, a diferencia del modelo de base de datos relacional, donde en caso de que se necesite agregar un nuevo atributo, la columna se aplicará a todos los registros existentes en la base de datos.

Recuerda que para insertar cualquier atributo nuevo en algo que ya existe, debes tener mucho cuidado de no desordenar tu base de datos o terminar con atributos perdidos o sin usar.

Debes estar preguntándote: "Está bien, ya entendí cómo inserto datos, pero si quiero eliminar datos, ¿qué habría que hacer?".

Antes de explicar cómo en MongoDB, te mostraré cómo sería en una base de datos relacional:

Cuando necesitamos eliminar en MongoDB, usamos:

Para actualizar datos en caso de que usáramos SQL, tendríamos el código:

Ahora bien, para actualizar sobre la base de datos MongoDB, tendríamos:

Para comprender lo que sucedió anteriormente, la instrucción $eq especifica la condición de igualdad. Este operador empareja documentos donde el valor de un campo es igual al especificado. En este caso, busca la ciudad Campina Grande y luego, usando la instrucción $set, sustituye el valor del estado por Paraíba, en caso de que el valor de la ciudad sea Campina Grande. Y por último tenemos el multi, que es una declaración opcional, pero si se establece en true, sirve para actualizar varios documentos que cumplen con los valores de los criterios de consulta, pero que tiene el valor false por defecto.

Otro tipo de comando que se usa mucho es el comando de consulta. MongoDB tiene un poderoso lenguaje de consulta basado en documentos, lo que hace que las consultas sean una transición fácil desde una base de datos relacional, y la conversión de consultas se realice con bastante facilidad.

En el siguiente ejemplo tendremos la consulta en SQL:

Cuando tomamos la misma situación y la aplicamos a MongoDB tenemos:

Otra situación muy común es: ¿Qué pasa si queremos ordenar ascendente y descendente?

Observa ambas situaciones en SQL a continuación:

Ascendente:

Descendiente:


Ahora en MongoDB:

Ascendente:


Descendente:

Teniendo en cuenta lo mencionado anteriormente, podemos entender que las ventajas de usar MongoDB son:

  • Podemos representar objetos del mundo real tal como son y, si es necesario actualizar o insertar nuevos atributos, podemos aplicarlos solo donde sea necesario y no en todas las tablas, como es el caso del modelo relacional.
  • A diferencia de la base de datos relacional, donde necesitamos crear las relaciones de las tablas de forma que se eviten redundancias en el código, en MongoDB la situación es diferente, considerando que no necesitamos relaciones y que a veces se fomenta la duplicación, como en algunas situaciones mencionadas anteriormente, y almacenamos los datos de la manera que queremos, recordando siempre ensamblar tu base de datos de manera bien estructurada para evitar errores y pérdida de datos.
  • En general, en MongoDB tenemos documentos que contienen toda la información que necesitamos sin necesidad de utilizar varios joins. De esta manera, hacemos una sola consulta, devolviendo el documento completo, que contiene toda la información buscada y resultando en una ganancia de rendimiento significativa.

Ventajas de utilizar MongoDB


Además de lo ya expuesto, otra ventaja es la mayor flexibilidad con los documentos. Como se mencionó anteriormente, MongoDB utiliza documentos como base de almacenamiento, lo que permite modelar y manipular fácilmente prácticamente cualquier estructura de datos.

Otra sería que MongoDB es ampliamente compatible, con acceso nativo en el código y sin la necesidad de usar frameworks wrappers y herramientas más pesadas.

Desventajas de utilizar MongoDB

  • El tamaño máximo del archivo BSON, dado que es de 16 megabytes. Lo anterior genera que un solo documento no puede usar una cantidad excesiva de RAM o de ancho de banda. Para los archivos que necesitan más almacenamiento, MongoDB proporciona GridFS.
  • Limitación de las operaciones de ordenación. Si MongoDB no puede usar uno o más índices para ordenar campos en un documento, inicia una operación de ordenación con bloqueo de datos (Blocking Data Sort), que consiste en la necesidad de MongoDB para consumir y procesar todos los documentos de entrada para clasificarlos antes de devolver los resultados. Si tu solicitud requiere el uso de más de 100 megabytes de memoria del sistema para clasificarlos, provocará un error a menos que uses la función allowDiskUse(), que permite que MongoDB use archivos temporalmente en discos para almacenar datos que excedan el límite antes mencionado mientras se procesa la operación.

Espero que este artículo haya sido útil para aprender más sobre MongoDB. Pronto traeré más contenido.

¡Hasta la próxima!

⚠️
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Revelo.

Revelo Content Network da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.