En esta segunda publicación acerca de MongoDB veremos como arrancar el motor, crear una base de datos y poblarla con datos.

Anteriormente

Guía 1: Introducción a MongoDB, características clave

Iniciar MongoDB e importar o insertar datos

Arrancar el motor de MongoDB

Una vez la base de datos esta instalada, podríamos configurarla para que arranque automaticamente como un servicio, pero yo prefiero arrancarla manualmente para que no consuma recursos durante el tiempo que no la estoy utilizando.

Para eso, usando el terminal, entramos en la carpeta mongo que se ha creado al instalar mongodb, y ejecutamos el comando:

mongod -dbpath ./db

La aplicación mongod se arrancará y se mantendrá a la escucha en el puerto por defecto, y dará acceso a las bases de datos ubicadas bajo la carpeta db.

Conectar a la base de datos

Para conectar y empezar a utilizar la base de datos, abrimos un nuevo terminal y ejecutamos la shell. Para ello, si durante la instalación hemos incluido mongo en el PATH, basta con ejecutar el comando:

> mongo

Listar las bases de datos

Ahora que hemos ejecutado la shell, podemos empezar a lanzar comandos en ella. Lo primero será listar todas las bases de datos disponibles en nuestro mongo. Prueba a escribir en la shell el siguiente comando:

> show dbs

Si nuestra instalación es nueva, mostrara una lista vacía, pero en otro caso se listará la lista completa de bases de datos disponibles en este entorno.

Crear una base de datos

En MongoDB, lo más habitual será crear las bases de datos dinamicamente a medida que las usemos. Las bases de datos permiten agrupar colecciones, del mismo modo que las colecciones agrupan documentos. Y también del mismo modo, no es necesario preparar o crear una base de datos antes de que pueda ser usada, lo que se traduce en que ésta se creará automaticamente en el momento en que guardemos documentos en ellas, aunque no exista ni base de datos ni colección alguna previamente.

Para comprobar esto, lanzaremos los siguientes comandos:

> use testdb

> db.users.insert({ name:”findemor” })

El primero de ellos determina en qué base de datos vamos a ejecutar los comandos posteriores,

El segundo es el que realiza realmente el trabajo: ejecuta la inserción del documento BSON incluido entre los paréntesis, dentro de la colección users.

Como no existían ni la base de datos testdb, ni la colección users, éstos se crean durante el proceso de inserción del documento.

Podemos comprobarlo listando las bases de datos:

> show dbs

Listando las colecciones

> use testdb

> show collections

Y listando los objetos de la colección

> db.users.find()

Veremos que el objeto se ha insertado y que incluye un atributo adicional “_id”.

Acerca del atributo identificador _id

Todos los documentos deben incluir al menos un identificador único, que debe llamarse _id. Si durante la creación del objeto éste no se especifica, MongoDB lo creará automáticamente.

El valor _id de un documento debe ser único dentro de una colección, y sobre él se establece automáticamente un índice, lo que acelera las búsquedas por él.

Además, siempre que sea único, su valor puede ser cualquiera que deseemos darle (basta con darle un valor específico durante la creación del documento), facilitando la integración con bases de datos existentes en otros sistemas de nuestra aplicación.

Otras formas de población de datos

Para poblar con datos una base de datos, existen numerosas formas:

  • Script de shell: la shell de mongo admite scripts Javascript, por lo que podríamos instanciar una variable dentro de un bucle y poblar una colección con datos de prueba.
  • for (i = 0; i & lt; 10; ++i) {  
    var doc = {  
    name: "user-" + i;  
    }
    
    db.posts.insert(doc);  
    }  
    
  • Ejecutar el script creado en una herramienta externa:
  • > load(“scripts/myusers.js”;)

  • Importar un documento que solo contenga Jsons: utilizando la herramienta mongoimport
  • Mongoimport –d testdb –c users myusers.json

  • Desde una aplicación utilizando el driver correspondiente, por ejemplo con MongoClient driver:
  • var MongoClient = require('mongodb').MongoClient;
    
    MongoClient.connect('mongodb://localhost:27017/testdb, function(err, db) {  
    if (err) throw err;  
    var query = {  
    'grade': 100  
    };
    
    function callback(err, doc) {  
    if (err) throw err;  
    console.dir(doc);  
    db.close();
    
    }  
    });  
    

    Enlaces a la guía completa