Introducción a MongoDB

MongoDB es un sistema gestor de base de datos no relacional (o sea, nada que ver con tablas y todo ese desmadre), MongoDB es en cambio un sistema orientado a documentos. MongoDB usa una representación binaria de JSON, se llama BSON.

¿Qué pedo con JSON?

¿Jason o JSON?
¿Jason o JSON?

No estamos hablando de Jason Voorhes, of course. Platiquemos un poco de los archivos JSON. JSON es un standard para representar estructuras de datos y arrays asociativos, objetos en JavaScript. Es una alternativa a XML. Un archivo JSON comienza con una llave { y termina con otra }. Los elementos de un archivo JSON se separan con comas y son del tipo key and value:

{
   "name":"Scooby",
   "lastname":"Doo"
}

Un elemento a su vez puede tener una estructura que comienza con otra llave:

{
   "name":"Homer",
   "address": { 
       "street": "Siempre Viva",
       "city":"Springfield"
   }
}

También un elemento puede a su vez tener una estructura tipo lista, que se representa con apertura [ y cierre ] de corchetes:

{
   "name":"Introducción a MongoDB",
   "comment": [ 
       {"author":"el oso barrigoso",
        "email":"oso@barrig.oso"
       },
       {"author":"el cashi shin kerer",
        "email": "ximena@sarinana.com"
       }
   ]
}

También podemos usar datos numéricos y booleanos. Este brevísimo repaso de JSON nos ayudará a comprender más de MongoDB.

Crear y usar una base de datos

Vamos a empezar usando el intérprete de MongoDB (asumiendo que ya está instalado en el sistema). Tecleamos mongo y por default ya tendremos creada la base de datos llamada test y también la estaremos usando; algo que debemos tener en cuenta es que el interpréte está construido con Javascript.

Si quisieramos crear otra base de datos (y también usarla) tecleamos: use otrabasededatos.

Crear un documento

  • Lo equivalente a una fila en el modelo relacional es un documento en MongoDB

Vamos a crear un documento que sea útil para guardar el nombre y fecha de nacimiento de mujeres guapas y calientes: girls = { "name":"Lindsay Lohan", "birthday":"July 2, 1986" }.

Guardar un documento en una colección

  • Lo equivalente a una tabla en el modelo relacional es una colección en MongoDB

Ahora guardaremos el documento en lo equivalente a una tabla, es decir, una colección: db.hotgirls.insert(girls). Como puedes ver hemos creado implícitamente la colección hotgirls al hacer el primer insert. También podemos crear la colección explícitamente: db.createCollection("hotgirls") el intérprete nos devolverá esto: { "ok" : 1 }.

Para ver cuántas colecciones hay en nuestra base de datos escribimos: show collections y el resultado será: hotgirls system.indexes.

Antes de seguir vamos a insertar a más chicas hots a nuestra base de datos:

db.hotgirls.insert({"name":"Megan Fox", "birthday":"May 16, 1986"});
db.hotgirls.insert({"name":"Jessica Alba", "birthday":"April 28, 1981"});
db.hotgirls.insert({"name":"Adriana Lima", "birthday":"June 12, 1981", "birthplace":" Salvador, Bahia, Brazil"});

Quizás te preguntes ¿por qué madres al insertar los datos de Adriana Lima, quien por cierto es una mamasota, le añades un campo que antes no habías usado, eso es posible en MongoDB ya que los documentos no tienen que apegarse a un esquema determinado: schemaless, esta palabra en español suena como: esquimales. También gracias a eso podríamos hacer algo así: "name":666.

Ver el contenido de una colección

Ahora vamos a preguntarle a la base de datos ¿qué almacena en la colección hotgirls? El comando es igual de sencillo que los anteriores: db.hotgirls.find():

Es como el ya conocido select * from database de las bases de datos relacionales. El resultado será el siguiente:

{ "_id" : ObjectId("50c8de28f1e3991f167fd41a"), "name" : "Lindsay Lohan", "birth" : "July 8, 1986" }
{ "_id" : ObjectId("50c8e1d8f1e3991f167fd41b"), "name" : "Megan Fox", "birthday" : "May 16, 1986" }
{ "_id" : ObjectId("50c8e1d8f1e3991f167fd41c"), "name" : "Jessica Alba", "birthday" : "April 28, 1981" }
{ "_id" : ObjectId("50c8e1d9f1e3991f167fd41d"), "name" : "Adriana Lima", "birthday" : "June 12, 1981", "birthplace" : " Salvador, Bahia, Brazil" }

¿Qué pedo con el campo _id? Es la llave primaria de nuestra colección, MongoDB la crea automáticamente.

Veamos ahora una instrucción similar db.hotgirls.findOne():

{
	"_id" : ObjectId("50c8e357f1e3991f167fd41e"),
	"name" : "Lindsay Lohan",
	"birthday" : "July 8, 1986"
}

Esta instrucción nos retorna un sólo documento, el primero que hayamos insertado.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s