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