Por lo general, los di­fe­re­n­tes modelos de bases de datos, SQL o NoSQL, se di­fe­re­n­cian si­g­ni­fi­ca­ti­va­me­n­te en cuanto a su co­n­fi­gu­ra­ción y fu­n­cio­na­mie­n­to. El software de código abierto MongoDB es el ejemplo perfecto para demostrar que, aun cuando se utiliza una base de datos NoSQL, esto no implica ne­ce­sa­ria­me­n­te que se tengan que tirar por la borda todos los co­no­ci­mie­n­tos sobre bases de datos re­la­cio­na­les. Aunque la base de datos orientada a do­cu­me­n­tos se di­fe­re­n­cia en gran medida de clásicos como MySQL, ambos modelos comparten ciertas si­mi­li­tu­des que en­co­n­tra­rás en nuestra guía sobre MongoDB. Aunque MongoDB requiere una fa­mi­lia­ri­za­ción con el lenguaje de consulta y la sintaxis de comandos, iniciarse en él no implica una gran di­fi­cu­l­tad para usuarios ex­pe­ri­me­n­ta­dos en el uso de SQL. 

En el siguiente tutorial de MongoDB nos ocupamos de la in­s­ta­la­ción, co­n­fi­gu­ra­ción y gestión de este moderno sistema de bases de datos, uti­li­za­n­do Ubuntu como ejemplo.

Paso 1: la in­s­ta­la­ción

En el área de descargas de la página oficial de MongoDB en­co­n­tra­rás la edición de código abierto “Community Server”, así como la solución comercial para empresas. El primer paso consiste en se­le­c­cio­nar los archivos binarios de in­s­ta­la­ción para tu sistema y de­s­ca­r­gar­los. MongoDB es un programa mu­l­ti­pla­ta­fo­r­ma, por lo que se adapta a una gran variedad de sistemas, como Windows, Linux, OS X y Solaris. En un sistema operativo Windows, es posible instalar la base de datos uti­li­za­n­do si­m­ple­me­n­te el archivo de in­s­ta­la­ción de­s­ca­r­ga­do y al­ma­ce­ná­n­do­lo en el di­re­c­to­rio co­rre­s­po­n­die­n­te. Los usuarios de Windows 10 pueden utilizar la versión para Windows Server 2008 (64 bits). Para Linux y otros sistemas UNIX es necesario descargar el archivo, de­s­co­m­pri­mi­r­lo e in­s­ta­lar­lo con la ayuda del gestor de paquetes co­rre­s­po­n­die­n­te. De­pe­n­die­n­do de la di­s­tri­bu­ción, tendrás que importar la clave pública GPG para MongoDB. Ubuntu requiere esta clave de au­te­n­ti­ca­ción, por lo que se debe im­ple­me­n­tar el siguiente comando:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

A co­n­ti­nua­ción, actualiza la lista del gestor de paquetes:

sudo apt-get update

Fi­na­l­me­n­te, instala MongoDB, así como otras he­rra­mie­n­tas útiles de gestión:

sudo apt-get install -y mongodb-org

Paso 2: inicia el servidor MongoDB

Si lo deseas, en el archivo de co­n­fi­gu­ra­ción /etc/mongod.conf puedes cambiar el di­re­c­to­rio de in­s­ta­la­ción asignado por defecto /var/lib/mongodb, así como el di­re­c­to­rio de registro /var/log/mongodb. Utiliza el siguiente comando para iniciar la base de datos:

sudo service mongod start

Si, en lugar de utilizar el parámetro start, se utiliza el parámetro stop, se finaliza la ejecución de la base de datos; restart se encargará de re­ini­ciar­la. Para comprobar si MongoDB se ha iniciado con éxito, puedes buscar la siguiente línea de comando en el archivo de registro /log/mongodb/mongod.log:

[initandlisten] waiting for connections on port <port>

Esta indica que el servidor de la base de datos se está eje­cu­ta­n­do y espera las co­ne­xio­nes entrantes del puerto definido (<port>) en el archivo de co­n­fi­gu­ra­ción. Se utiliza por defecto el puerto 27017.

Paso 3: iniciar el cliente

Una vez se ejecuta el servidor MongoDB, se puede iniciar el cliente. En este punto se utiliza Mongo shell, la interfaz de comandos incluida por defecto, basada en Ja­va­S­cri­pt y utilizada para la ad­mi­ni­s­tra­ción de la base de datos, así como para el acceso y la ac­tua­li­za­ción del conjunto de datos. Con este comando puedes iniciar el cliente dentro del mismo sistema en el que se ejecuta la apli­ca­ción MongoDB:

mongo

Mongo shell se conecta au­to­má­ti­ca­me­n­te con la instancia de Mongo DB ejecutada en el host y el puerto local 27017. También es posible modificar los ajustes estándar y ada­p­tar­los a las propias ne­ce­si­da­des. La siguiente tabla resume estas y otras opciones im­po­r­ta­n­tes:

Parámetro De­s­cri­p­ción
--shell Activa la interfaz del shell y la presenta después de ejecutar un comando.
--nodb Evita que Mongo shell se conecte con una base de datos.
--port <port> Define el puerto para la conexión.
--host <hostname> Define el host para la conexión.
--help o -h Muestra las opciones.
--username <username> o -u <username> Una vez definidos los permisos de acceso, podrás acceder con tu re­s­pe­c­ti­vo nombre de usuario (<username>).
--password <password> o -p <password> Cuando se han definido los permisos de acceso, podrás acceder uti­li­za­n­do la co­n­tra­se­ña (<password>) co­rre­s­po­n­die­n­te.</password>

Los símbolos de menor que (<) y mayor que (>) uti­li­za­dos en la tabla anterior no forman parte del parámetro como tal y por lo tanto no aparecen en el comando final. El proceso de de­fi­ni­ción del puerto significa, por ejemplo, que si decides utilizar el puerto 40000 en vez del 27017, se verá así:

mongo --port 40000

Paso 4: crear una base de datos

Una vez MongoDB y el cliente están en fu­n­cio­na­mie­n­to, puedes co­n­ce­n­trar­te en la gestión y edición de datos. Sin embargo, antes que nada es necesario crear una base de datos, de lo contrario, el conjunto de datos (co­lle­c­tio­ns) y los do­cu­me­n­tos se al­ma­ce­na­rán en la base de datos de prueba generada au­to­má­ti­ca­me­n­te. El comando use facilita la creación de una base de datos. Si deseas crear una con el nombre mi­ba­se­de­da­tos, utiliza el siguiente comando:

use mibasededatos

El comando use también permite se­le­c­cio­nar una base de datos MongoDB ya existente en caso de que quieras uti­li­zar­la para el pro­ce­sa­mie­n­to de datos. Con la ayuda del comando corto db, puedes ide­n­ti­fi­car qué base de datos se encuentra ac­tua­l­me­n­te se­le­c­cio­na­da.

Paso 5: crear co­lle­c­tion

El siguiente paso es crear tu primera co­lle­c­tion o carpeta de archivos para los di­fe­re­n­tes do­cu­me­n­tos BSON, en donde, po­s­te­rio­r­me­n­te, se guardará la totalidad de los datos. La sintaxis básica es esta:

db.createCollection(<name>, { options } )

Así, el comando tiene ambos pa­rá­me­tros: name (nombre de la carpeta de archivos) y options (opciones de co­n­fi­gu­ra­ción para co­lle­c­tion). En las opciones se es­pe­ci­fi­ca, por ejemplo, si se debe limitar el tamaño de los archivos (capped: true) o si se deben limitar la cantidad de bytes (size: <number>) o el número de do­cu­me­n­tos (max: <number>) en una co­lle­c­tion. Una co­lle­c­tion de­no­mi­na­da mi­ca­r­pe­ta­dea­r­chi­vos, con un límite de bytes de 6.142.800 y un máximo de 10.000 do­cu­me­n­tos se crearía, por ejemplo, con el siguiente comando (el espacio en blanco solo sirve para ofrecer mejor claridad:

db.createCollection ("micarpetadearchivos", { capped: true,
    size: 6142800,
    max: 10000 } )

Paso 6: agregar do­cu­me­n­tos

Una vez se ha creado la carpeta, se le pueden añadir do­cu­me­n­tos. Para ello existen, pri­n­ci­pa­l­me­n­te, tres métodos:

  • .insertOne()

  • .in­se­r­t­Ma­ny()

  • .insert()

De esta forma es posible añadir solo un documento (.insertOne), algunos do­cu­me­n­tos (.in­se­r­t­Ma­ny) o un gran volumen de do­cu­me­n­tos (.insert). El siguiente ejemplo muestra una entrada de base de datos con tres datos simples: nombre, edad y ocupación, que se in­se­r­ta­rán en la carpeta creada en el paso anterior.

db.micarpetadearchivos.insertOne(
{
        Nombre: "nombre",
        Edad: 28,
        Ocupación: "estudiante"
    }
)

Así, tanto para esta entrada, como para todas las futuras, MongoDB genera au­to­má­ti­ca­me­n­te un ide­n­ti­fi­ca­dor único para cada co­lle­c­tion.

Paso 7: ad­mi­ni­s­trar do­cu­me­n­tos

En la etapa final de nuestro tutorial de MongoDB mostramos el proceso de gestión básica de los do­cu­me­n­tos creados. Para poder realizar cualquier cambio en un documento debes en­co­n­trar­lo. Esta solicitud se logra con el comando find y puede, de ser necesario, pre­se­n­tar­se y filtrarse con los pa­rá­me­tros query filter (filtros de consulta) y pro­je­c­tion (es­pe­ci­fi­ca­ción de los re­su­l­ta­dos). Por ejemplo, para acceder al documento generado en el paso anterior, se utiliza el siguiente comando:

db.micarpetadearchivos.find( { Nombre: "nombre", Edad: 28 } )

Si lo que quieres es ac­tua­li­zar este documento, puedes valerte de la función update. Para ello, escoge el valor que deseas cambiar, se­le­c­cio­na un operador update y es­pe­ci­fi­ca el nuevo valor. Por ejemplo, para modificar la edad del caso anterior, necesitas el operador $set:

db.micarpetadearchivos.update( 
{ Edad: 28 },
{
    $set: { Edad: 30 }
}
)

Para conocer otros de los ope­ra­do­res update, visita la do­cu­me­n­ta­ción en inglés de la web oficial de MongoDB.

Para eliminar los do­cu­me­n­tos de una co­lle­c­tion, utiliza el comando remove:

db.micarpetadearchivos.remove ()

La única manera de eliminar do­cu­me­n­tos in­di­vi­dua­les o co­le­c­cio­nes es mediante la de­fi­ni­ción de criterios tales como la ide­n­ti­fi­ca­ción del archivo u otros valores exactos que le permitan a MongoDB de­te­r­mi­nar de qué tipo de registro se trata. Cuánto más es­pe­cí­fi­co seas, más exacta será la actuación del sistema a la hora de eliminar archivos. Por ejemplo, el comando:

db.micarpetadearchivos.remove ( { Edad: 28 } )

elimina todas las entradas con el valor 28 para el campo “Edad”. Usando el parámetro justOne (1) también es posible es­pe­ci­fi­car que solo quieres eliminar una de las entradas con dicho valor:

db.micarpetadearchivos.remove ( { Edad: 28 }, 1 )

Para obtener más in­fo­r­ma­ción sobre, por ejemplo, la ad­mi­ni­s­tra­ción de usuarios, las co­n­fi­gu­ra­cio­nes de seguridad, la creación de réplicas o la di­s­tri­bu­ción de datos en múltiples sistemas, visita la do­cu­me­n­ta­ción oficial en mongodb.com o el tutorial de MongoDB en tu­to­ria­l­s­poi­nt.com.

Ir al menú principal