jueves, 10 de abril de 2014

Hello World MongoDB, introducción a MongoDB

Buenas a todos!

Voy a hacer una pequeña introducción o Hello world en MongoDB!

A diferencia de las bases de datos relacionales típicas, como Oracle o MySQL, que emplean el lenguaje de declarativo SQL, MongoDB emplea para generar las consultas, inserciones, actualizaciones y eliminaciones, JavaScript!

Además los resultados obtenidos por las consultas están en formato JSON, lo que es perfecto cuando trabajamos con aplicaciones web.

Equivalencias entre conceptos de SQL y conceptos de MongoDB 

En MongoDB no tenemos tablas, trabajamos con collections.

Y lo que equivaldría a una fila o row de una tabla en SQL, en MongoDB es un document o BSON document. Los BSON documents son los que almacenan los objetos json en formato binario.

Los objetos json contienen campos o fields, no columnas como las tablas SQL.

De todas formas ambos sistemas de base de datos emplean las primary keys, para definir los campos que identifican de forma única una fila o un document (objeto json).

Mientras que en SQL hay que especificar la creación de todas las columnas de una tabla, MongoDB de forma automática crea un campo o field llamado _id que contiene la primary key, es un comportamiento por defecto muy útil.

Hello world MongoDB

Muy bien! Vamos a crear una pequeña base de datos a modo de Hello world para MongoDB.

La base de datos se llamará 'db_world' y contendrá paises del mundo, un listado con los idiomas que se hablan y las capitales.

Una vez instalado MongoDB, vamos a ejecutar en el shell de linux, la instrucción "mongo".

Crear la base de datos
> use db_world Si no existe, la crea y asigna a la variable db una referencia a las instancias de db_world.
Si ya existe, asigna a la variable db una referencia a las instancias de db_world.

Crear una collection e insertar un objeto
> db.world.insert({country:"Spain", capital:"Madrid", language:["es","ca","eu","gl"]}) Al realizar el insert se crea automáticamente la collection world, y directamente se inserta el objeto json que contiene los datos del país.

Consultar los datos de una collection
> db.world.find() Genera la salida:
{ "_id" : ObjectId("534665c91895da39bc16ff56"), "country" : "Spain", "capital" : "Madrid", "language" : [ "es", "ca", "eu", "gl" ] }

Como podéis ver automáticamente ha añadido el campo primary key _id, y la salida es el objeto json.

Ahora vamos a añadir otro país:
> db.world.insert({country:"Switzerland", capital:"Berna", language:["fr","de","it"]})

Si volvemos a realizar el find sobre la collection world, generará la siguiente salida:
> db.world.find() Genera la salida:
{ "_id" : ObjectId("534665c91895da39bc16ff56"), "country" : "Spain", "capital" : "Madrid", "language" : [ "es", "ca", "eu", "gl" ] }
{ "_id" : ObjectId("5346665762bac1c0ff258610"), "country" : "Switzerland", "capital" : "Berna", "language" : [ "fr", "de", "it" ] }

find() también nos permite consultar los objetos que contienen un valor específico.
Por ejemplo, supongamos que queremos ver el país cuya capital es Berna:
> db.world.find({capital:"Berna"})
Respuesta:
{ "_id" : ObjectId("5346665762bac1c0ff258610"), "country" : "Switzerland", "capital" : "Berna", "language" : [ "fr", "de", "it" ] }

O algo más complejo, supongamos que queremos ver los países donde se habla francés:
> db.world.find({language:{$in:["fr"]}})
 Respuesta:
{ "_id" : ObjectId("5346665762bac1c0ff258610"), "country" : "Switzerland", "capital" : "Berna", "language" : [ "fr", "de", "it" ] }


Cómo podéis ver, en ningún momento he tenido que declarar la estructura de los objetos que debe contener la collection world, eso es debido a que al igual que los objetos de javascript, las collections de MongoDB no obligan a cumplir una estructura determinada, de hecho su estructura puede variar dinámicamente, añadiendo o quitando campos, mediante el uso de update().

Hasta aquí mi introducción a MongoDB!
Espero que haya sido fácil de entender y que os anime a utilizarlo!

Un saludo a todos!!

No hay comentarios:

Publicar un comentario