En este tutorial vamos a realizar una pequeña introducción a una base de datos nosql llamada MongoDB.
La palabra mongo proviene del inglés "humongous" que significa "extremadamente grande".
Es una base de datos de tipo NoSQL (que no usa el lenguaje SQL para realizar consultas).
Está orientada a documentos, que son muy similares a JSON, aunque utiliza su propia estructura de datos que se llama BSON.
Esto permite almacenar Strings, números, booleanos, arrays, objetos, fechas, etc. Por cierto, si quieres conocer en detalle JSON, lee el artículo del blog (contiene un validador json online) JSON, incluso tienes un validador json online.
Mongodb es una base de datos muy rápida y de código abierto. La podemos encontrar para la mayoría de sistemas operativos como Windows, Linux, Mac OS.
Los datos se organizan en documentos y éstos en colecciones.
En una analogía con una base de datos relacional, los documentos serían las filas, y las colecciones las tablas.
Así por ejemplo podríamos tener una colección de artículos con los siguientes campos (título, visitas, fecha de creación, etiquetas, etc).
Y podríamos tener varios documentos con campos diferentes.
Es decir la estructura del documento es abierta. Esta estructura de los documentos se forma con pares (campo y valor), tal como se define en un documento JSON.
MongoDB utiliza su propio formato llamado BSON, que permite guardar Strings, Números, Booleanos, Objetos, Arrays, Fechas y el Identificador de Objeto.
Hay que comentar que MongoDB está relacionado con otras tecnologías como AngularJS, y nodeJS.
A este conjunto de frameworks se le llama MEAN Stack (Mongo Express AngularJS NodeJS) y está basado en Javascript.
Si también estáis interesados en conocer un poco de estas tecnologías, podéis pinchar en el artículo Angular JS y en servidor web con node JS.
Para acceder a la base de datos desde el terminal de windows o la consola de linux tan sólo hay que escribir mongo y ya accederemos.
Prueba MongoDB en la nube con el servicio MongoDB Atlas, es un servicio administrado y gestionado por el equipo de MongoDB.
Usa este enlace para obtener $50 al ejecutar un M10.
Vamos a mostrar unos ejemplos de mongodb que ilustran de manera visual cómo crear una base de datos, listar las bases de datos existentes, insertar, modificar, eliminar y buscar documentos en una colección. Para ver cada ejemplo pulsa el botón correspondiente para simular su efecto en mongodb.
Como premisa inicial vamos a suponer que tenemos instalado y configurado correctamente MongoDB.
Para crear una base de datos mongodb, tan sólo hay que escribir use coches
. Este comando selecciona la base de datos en cuestión, y si no existe la crea. En el ejemplo crearía la base de datos mongodb denominada coches.
Para sacar un listado de las bases de datos mongodb existentes hay que escribir show dbs
.
Para insertar un documento en la colección coches, hacemos db.coches.insert( { "marca":"Seat", "modelos":[ "Ibiza", "Arona", "Leon" ] } );
y eso retorna un WriteResult con el número de documentos insertados.
Para encontrar luego todos los documentos que hay en esa colección hacemos db.coches.find()
y nos mostrará la lista de objetos en formato json. Como vemos a cada objeto se le asigna un identificador único por defecto. También podríamos especificar un id nosotros a la hora de insertarlo.
El comando find es muy potente y permite filtrar la lista por un campo/valor determinado. Por ejemplo podemos buscar sólo los coches de la marca "Seat":db.coches.find( {"name":"seat"} )
.
Para borrar un documento hay que usar el comando remove, así pues si queremos borrar de la colección coches los de la marca Honda, haríamos db.coches.remove( {"marca":"Honda"} )
y nos devolvería un WriteResult con el número de filas eliminadas.
También podemos actualizar los documentos existentes de la colección, por ejemplo podemos añadir el Ateca a la lista de modelos del documento. db.coches.update ( {"marca":"Seat"}, {"$push:{"modelos":"Ateca"}} )
Existen muchas otras funcionalidades que iremos ampliando en un futuro, pero de momento con esto nos hacemos una idea de las posibilidades de la base de datos MongoDB.