Introducción a MongoDB

Avatar Tutor | octubre 23, 2018

MongoDB es una base de datos NoSQL. Las bases de datos NoSQL son diferentes de las bases de datos relacionales tradicionales (RDB) como MySQL o postgreSQL.

Estas tienen un esquema, campos, restricciones, tipo de campos, desencadenadores, etc. predefinidos.

En el caso de una base de datos NoSQL típica, no hay nada de lo anterior. No es necesario definir una estructura antes de construir la base de datos. Esto permite que una base de datos MongoDB se amplíe o reduzca dependiendo de la aplicación, y que sea fácil de escalar.

NoSQL es mucho más rápido en la mayoría de los casos; así que si necesita almacenar o recuperar grandes cantidades de datos, NoSQL es el camino a seguir.

Hay diferentes tipos de bases de datos NoSQL, como almacenes de valores clave, bases de datos de documentos, almacenes de columna amplia y bases de datos de gráficos. MongoDB, una base de datos de documentos, almacena todos los esquemas y registros en documentos usando una sintaxis al estilo JSON (Notación de objetos de JavaScript).

Instalación

Windows

  1. Descarga MongoDB Community Edition.
    – Abra un navegador web y visite el Centro de descargas de MongoDB.
    – El Centro de descarga debería mostrar la versión actual estable y tener seleccionada la pestaña de Windows del icono de Windows. Si esa pestaña no está seleccionada, haga clic en esa pestaña.
    – Haga clic en Descargar (msi).
  2. Abra el Explorador de Windows / Explorador de archivos.
  3. Vaya al directorio en el que descargó el instalador de MongoDB.
  4. Haga doble clic en el archivo .msi.
  5. Siga el asistente de instalación de MongoDB Community Edition.

macOS (usando brew)

Puedes instalar MongoDB a través de brew con varias opciones diferentes. Utilice una de las siguientes operaciones:

Para instalar los binarios de MongoDB, emita el siguiente comando en un shell del sistema:

brew install mongodb

Para instalar la última versión de desarrollo para uso en pruebas y desarrollo, ejecute el siguiente comando en un shell del sistema:

brew install mongodb --devel

Para linux por favor mira la documentación oficial.

Una vez que haya instalado MongoDB, agregue el directorio bin a la ruta. Debe tener en cuenta dos archivos ejecutables binarios.

mongod: Este es el daemon (un programa que siempre se ejecuta en segundo plano como un servicio) para el servidor MongoDB.
mongo: esta es la interfaz de shell del cliente de la línea de comandos para MongoDB.

El shell se inicia ejecutando el comando mongo desde cualquiera de las interfaces de la línea de comandos de su sistema operativo.

Una vez que entres en esta parte, deberías ver una pantalla negra con lo siguiente:

usuario@ubuntu:~$ mongo
MongoDB shell version: 3.0.7
connecting to: test
Server has startup warnings:
[ mensajes de errores... ]
[ no es necesario preocuparse por ellos... ]
>

Probando MongoDB

Para enumerar todas las bases de datos disponibles en el servidor actual, necesitamos usar el comando show dbs. Muestra la única base de datos local predeterminada y la dejaremos de lado sin tocarla.

> show dbs
local 0.000GB
>

Para crear y usar una nueva base de datos necesitamos el comando use. Vamos a crear una nueva base de datos llamada bdmongo:

> use bdmongo
switched to db bdmongo
>

Cuando usamos el comando use, crea una nueva base de datos, si es que no existe, y también se cambia a esa base de datos.

Para verificar la base de datos actual en la que estamos, tenemos un comando práctico llamado db. En caso de duda, nos dará la base de datos actual en la que estamos.

Documentos

La sintaxis de un documento se parece a JSON (Notación de objetos de JavaScript). Por ejemplo:

{
"field1": "value1",
"field2": "value2",
// --- etc. ---
"fieldN": "valueN"
}

Consideremos un registro de estudiante. Un registro de estudiante típico puede contener detalles básicos como nombre, correo electrónico y título:

{
"name": "Pedro Perez",
"titulo": "Ingeniero",
"email": "[email protected]"
}

Términos comunes en MongoDB

A continuación se muestran algunos de los términos comunes utilizados en MongoDB.

_id: este es un campo requerido en cada documento de MongoDB. El campo _id representa un valor único en el documento MongoDB. El campo _id es como la clave principal del documento. Si crea un nuevo documento sin un campo _id, MongoDB creará automáticamente el campo.

En el caso anterior mongodb agregaría un valir id de esta manera:

{
"_id": "563479cc8a8a4246bd27d784"
"name": "Pedro Perez",
"titulo": "Ingeniero",
"email": "[email protected]"
}

collection: Esta es una agrupación de documentos de MongoDB. Una colección es el equivalente de una tabla que se crea en cualquier otro RDMS como Oracle o MS SQL. Existe una colección dentro de una sola base de datos. Como se ve en la introducción, las colecciones no imponen ningún tipo de estructura.

cursor: este es un puntero al conjunto de resultados de una consulta. Los clientes pueden iterar a través de un cursor para recuperar los resultados.

database: este es un contenedor para colecciones como en RDMS, en donde es un contenedor para tablas. Cada base de datos obtiene su propio conjunto de archivos en el sistema de archivos. Un servidor MongoDB puede almacenar múltiples bases de datos.

document: un registro en una colección de MongoDB se denomina básicamente un documento. El documento a su vez constará de nombre de campo y valores.

field: Un par nombre-valor en un documento. Un documento tiene cero o más campos. Los campos son análogos a las columnas en las bases de datos relacionales.

JSON: esto se conoce como notación de objetos de JavaScript. Este es un formato de texto simple legible por humanos para expresar datos estructurados. JSON es actualmente soportado en muchos lenguajes de programación.

Solo una nota rápida sobre la diferencia clave entre el campo _id y un campo id normal. El campo _id se utiliza para identificar de forma única los documentos en una colección y MongoDB lo agrega automáticamente cuando se crea la colección.

Modelado de Datos

Como ya hemos dicho, los datos en MongoDB tienen un esquema flexible. A diferencia de las bases de datos SQL, donde debe tener un esquema de tabla declarado antes de insertar datos, las colecciones de MongoDB no imponen la estructura del documento. Este tipo de flexibilidad es lo que hace que MongoDB sea tan poderoso.

Al modelar datos en Mongo, tenga en cuenta lo siguiente

  • ¿Cuáles son las necesidades de la aplicación? Observe las necesidades comerciales de la aplicación y vea qué datos y el tipo de datos necesarios para la aplicación. Sobre esta base, asegúrese de que la estructura del documento se decida en consecuencia.
  • ¿Cómo son los patrones de recuperación de datos? Si prevé un uso intensivo de consultas, considere el uso de índices en su modelo de datos para mejorar la eficiencia de las consultas.
  • ¿Se realizan frecuentes inserciones, actualizaciones y eliminaciones en la base de datos? Reconsidere el uso de índices o incorpore fragmentación si así lo requiere su diseño de modelado de datos para mejorar la eficiencia de su entorno general de MongoDB.

Written by Tutor