base de datos mongodb tutorial

Tutorial MongoDB: Instalación en Ubuntu

Comparte este artículo

Introducción a MongoDB. ¿Qué es MongoDB?

Es un motor de base de datos noSQL. A diferencia de los motores sql en los noSql los datos no estan organizados con tablas y relaciones. MongoDB almacena documentos en colecciones guardándose los documentos en un formato muy parecido al JSON (BSON).

MongoDB se basa en collections (colecciones) que es una carpeta donde irán todos los documentos BSON que se almacenen en MongoDB, básicamente serán como las tablas de una base de datos. De esta forma podremos mantener la información organizada en carpetas.

Instalación de MongoDB en ubuntu 14.04 y 16.04

Lo primero que hay que hacer a la hora de aprender MongoDB es instalarlo, por ello lo vamos a instalar en Ubuntu 14.04 que es el sistema operativo que tengo, se podrá instalar en versiones posteriores fácilmente.

En este paso, importaremos la clave pública de MongoDB GPG. MongoDB ya esta incluido en los repositorios de Ubunto pero el repositorio oficial de MongoDB tiene la última version de su software. Ubuntu se asegura la autenticidad de los paquetes verificando que están firmados con claves GPG, por tanto vamos a importar la clave el repositorio oficial de MongoDB:

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

Ahora tenemos que añadir los detalles del repositorio de MongoDB para que APT sepa de donde descargar los paquetes.

echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

Ahora hay que actualizar la lista de paquetes

sudo apt-get update

Para casi terminar, simplemente deberemos instalar el paquete de MongoDB

sudo apt-get install mongodb-org

Ese comando nos instalará varios paquetes con la última versión estable de MongoDB y herramientas para el MongoDB server. Tras instalarse MongoDB podemos inicializar el servidor con:

mongod

Una vez esté corriendo el servidor de mongoDB podemos conectarnos con el cliente por defecto, para ello simplemente haremos que nos salga una consola de mongoDB tecleando:

mongo

Crear una base de datos en MongoDB

Lo primero que tenemos que hacer desde la consola de mongoDB es crear una base de datos, para ello se usa un comando que nos servirá tanto para crear bases de datos como para usarlas:

// Creamos una base de datos
// use NOMBRE_BASEDATOS
use test
// Mas adelante la podremos seleccionar con el mismo comando
// use NOMBRE_BASEDATOS
use test
// Para obtener la base de datos que estamos usando:
db
// nos devolvera: test

Crear una collection en MongoDB

Como ya tenemos creada nuestra base de datos (test), ahora tenemos que crear una collection al menos para almacenar ahí los documentos (datos). Para ello se ejecuta este comando

// Admite un parametro name (nombre de la colección o carpeta de archivos) y un conjunto de parámetros (options) que serán las opciones
// db.createCollection(, { options } )
// Sin parámetros
db.createCollection("usuarios");

Si queremos añadir opciones tales como limitar la cantidad de bytes que se almacenará o el número máximo de documentos a almacenar se haría de esta forma:

// capped: true: indica si se debe limitar tamaño de documentos
// size: 3042800: Limita la cantidad de bytes de cada documento
// max: 20000: Limitamos el número de documentos
db.createCollection ("usuarios_opciones", { capped: true,
                    size: 3042800,
                    max: 20000 } )

Para mostrar todas las collections que hemos creado en una base de datos:

show collections

Inserción, búsqueda y actualización de documentos en MongoDB

Para insertar documentos en mongoDB podemos usar tres métodos:

  1. .insertOne(): Inserta un sólo documento
  2. .insertMany(): Inserta varios documentos
  3. .insert(): Inserta un gran volumen de documentos

Por ejemplo, si queremos insertar en nuestra collection de usuarios creada anteriormente un documento con los datos de un usuario, se haría desde la consola:

db.usuarios.insertOne(
{
    Nombre: "Oscar",
    Apellido1: "Garcia",
    Apellido2: "Sanchez",
    Edad: 45,    
  }
)

Una vez tengamos documentos insertados en el MongoDB, el paso lógico sería buscarlos y actualizarlos.
Para buscar un documento MongoDB dispone del comando find que usa filtros de consulta, tened en cuenta que es sensible a mayúsculas y que si no encuentra el documento no nos devolverá nada. Si ejecutamos el find sin filtros nos devolverá todos los documentos de esa colección:

// Nos devuelve el registro que hemos insertado
db.usuarios.find({Nombre:"Oscar",Apellido1:"Garcia"});
// Nos devuelve todos los registros que haya en la colección
db.usuarios.find();

Para actualizar un documento hay que escoger el valor por el que buscaremos los registros a cambiar y especificar el nuevo valor (o los nuevos valores). Es decir, si estuviéramos en mysql: primero se le pasa el WHERE y luego los datos a actualizar. Para indicarle los campos a actualizar se usa el comando $set:

db.usuarios.update(
   {Nombre:'Oscar'},
   {$set:
        {Apellido1:"Sanchez",Nombre:"Manuel"}
   });
// El sistema nos devolverá algo parecido a esto, indicandonos los que ha encontrado y modificado:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Es importante decir, que los update son por defecto unitarios, es decir, si más de una clave es afectada sólo se actualizará el primer documento que encuentre. Si queremos actualizar varios hay que añadir el parametro multi:true para indicarle que debe actualizar todos los documentos que cumplan la condición:

db.usuarios.update(
   {Nombre:'Oscar'},
   {$set:{Apellido1:"Garcia2",Nombre:"Oscar Manuel"}},
   {multi:true}
);

Hay que tener en cuenta que todo esto es desde la consola de MongoDB, si usamos una implementación PHP por ejemplo, el parámetro “multi” se llamará “multiple”, es importante tenerlo en cuenta para no liarnos.

La operación update además del operador $set tiene otros muy útiles que explicaremos en la siguiente sección:

Operadores de update en MongoDB

MongoDB además del operador update $set que explicamos antes tiene otros más que pueden resultarnos útiles.

Operador de update $inc (incrementar) en MongoDB

Insertaremos un contador en nuestra collection para opera en él:

// Insertamos un contador llamado contador_1 con valor 0
db.usuarios.insertOne({contador:'contador_1',valor:0});

Ahora usamos el operador $inc para incrementar el contador_1 en 20, para ello primero buscamos el contador_1 y luego ponemos el $inc

// Seleccionamos el documento contador_1 e incrementamos su valor en 20
db.usuarios.update({contador:'contador_1'},{$incr:{valor:20}}});
// Seleccionamos el documento contador_1 e incrementamos su valor en 40
db.usuarios.update({contador:'contador_1'},{$incr:{valor:40}}});
// Vemos el valor del contador (deberia ser 60
db.usuarios.find({contador:'contador_1'});

Operador de update $mul (multiplicar) en MongoDB

Este operador multiplicará el valor que haya por el valor que le pasemos. Este operador es muy útil para hacer cálculos evitando la condición de carrera, es decir, cuando necesitamos multiplicar un campo por un valor en condiciones normales tendríamos que coger el campo, multiplicarlo en memoria y guardarlo, esto fallaría si entre medias otro proceso modifica el campo que estamos modificando. Con $mul se hace en una operación unitaria.

// Seleccionamos el documento contador_1 y multiplicamos su campo valor por 5
db.usuarios.update({contador:'contador_1'},{$mul:{valor:5}});
// Vemos el valor del contador (deberia ser 300 (5*60)
db.usuarios.find({contador:'contador_1'});

Operador de update $unset (eliminar) en MongoDB

Este operador se usa para eliminar un campo de un documento (no el documento). Como siempre hay que buscarlo con update y pasarle la operación $unset para borrarlo. Si se le pasa un campo del documento que no exista no hará nada. Ten en cuenta que por nomenclatura hay que pasar el campo con valor ”, aunque curiosamente si ponemos cualquier valor también hará el unset, es decir lo importante es poner ‘ALGO’

// Seleccionamos el documento contador_1 y borramos su valor poniendolo a ''
db.usuarios.update({contador:'contador_1'},{$unset: {valor:''}});

Estos son los operadores principales y más útiles, pero ha más, podéis consultarlos en la web oficial de MongoDB

Eliminar documentos en MongoDB

Para eliminar documentos se usa la función remove y se le pasará una query de borrado, hay que tener cuidado porque si le pasamos una query vacía borrara TODOS los documentos de la collection.

// Elimina todos los documentos de una collection, le pasamos como query {} y ya esta
db.usuarios.remove({});
// Elimina el contador de antes, le pasamos como query contador:'contador_1'
db.usuarios.remove({contador:'contador_1'});

Es buena práctica pasarle el parámetro justOne al comando remove para que encuentre lo que encuentre borre solo 1:

// Elimina todos los documentos, pero solo borrara 1 porque usamos justOne (1)
db.usuarios.remove({},1);
// Elimina todos los documentos con name:Oscar
db.usuarios.remove({name:'Oscar'});

También te podría gustar...

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar