2016-01-18_2210En este pequeño post vamos a hacer uso de los comandos básicos de MongoDB. hay que recordar que mongodb es una base de datos NoSql y no debemos de modelar datos en este tipo de bases de datos como en las bases de datos relacionales, ya que esto traerá problemas a futuro, nuestro modelo de datos debe ser DENORMALIZADO lo que significa cambiar totalmente nuestra forma de pensar una base de datos para nosotros que tenemos años trabajando con base de datos relacionales, sera difícil, si lo se, pero una vez que te adaptas, todo lucirá mucho mejor y sera mucho mas comprensible cada vez que comiences un nuevo proyecto. si desean internarse en el modelado de datos con NoSql este link es una buen comienzo para ver las diferentes técnicas de modelado de datos.
Ahora si primero vamos a entrar a nuestra terminal de linux o windows y accesamos a la consola de mongo, una vez que entramos desde nuestra terminal
vamos a usar el comando
  • show dbs;
este comando nos muestra las bases de datos NoSql que tenemos en mongodb
dbs
  • use [nombre de la base];
con este comando hacemos uso de una base de datos igual que en mysql, tambien este comando nos crea una base de datos y aparecera listada con show dbs; hasta que insertemos un documento en la coleccion.
2016-01-18_2133
  • db.[coleccion].insert(   [documento en formato JSON]  ) ;
Para insertar y crear una coleccion de datos en MongoDB solo debemos usar la sentencia inserty agregar el documento (datos) en formato JSON, la colecciones se crean automaticamente en mongodb una vez que insertamos un elemento o coleccion.
2016-01-18_2137
las colecciones en las bases de datos relacionales equivalen a las tablas. pero esto no quiere decir que se usan de la misma forma, o se relacionan entre si como las “bases de datos relaciones”.
  • show collections;
Este comando nos muestra las colecciones disponibles en la base datos, recuerda primero seleccionar la base de datos con el comando use.
2016-01-18_2145
  • db.[coleccion].find();
el comando find() nos muestra la lista de documentos (“registros”) de una coleccion, podemos filtrar o enviar  al comando find para especificar los resultados de nuestra consulta.
2016-01-18_2200
  • pretty();
si deseamos que los resultados se vean mucho mejor o darle un salida mas visible en pantalla, solo debemos agregar a la consulta   pretty() que hara que el resultado se vea bonito! 😉
2016-01-18_2202
si necesitas mas información acerca de la notación JSON puedes usar este link http://www.w3schools.com/json/json_syntax.asp, puedes encontrar la documentación de mongodb en este link para ver a profundidad los comandos aqui mostrados https://docs.mongodb.org/manual/


MIS PRIMEROS PASOS CON MONGODB UTILIZANDO NODEJS

 
 
 
 
 
 
Rate This

NYみやげのMongo goods貰った!He comenzado a montar un entorno de desarrollo con la base de datos NoSQL Mongodb y utilizar también NodeJS para ver su funcionamiento, la verdad es que llevaba tiempo detrás de ambos temas y ha llegado el momento de hacerlo y llevarlo a la práctica. La verdad es que el entorno de instalación tanto de MongoDBcomo de NodeJS, no es nada complicado en Linux, si lo intentas en otros sistemas operativos, encontrarás mucha información de cómo poder instalarlo o en la página oficial de MongoBD también dispones de todos los sistemas operativos que lo puedes instalar.
Vemos los primeros pasos de cómo podemos familiarizarnos con MongoDB y la shell que dispone para entender algunos comandos necesarios. Primero debemos arrancar desde el directorio bin el servidor de mongo : ./mongod en la que nos aparece los datos como:
MongoDB starting : pid=5982 port=27017 dbpath=/data/db/ 64-bit host=desarrollo
Ahora ya estamos en predisposición de poder entrar en la shell y ejecutar comandos con./mongo . Veamos algunos de esos comandos interesantes de saber:
Con el comando show dbs vemos todas las bases de datos creadas, así sabemos cuales son las que tenemos creadas y ponerlas en uso o activas con el comando use y el nombre de la base de datos, use curses por ejemplo. Pero puedes estar pensando si utilizas bases de datos relacionales, ¿Cómo me creo una base de datos?, en este caso es muy sencillo con el mismo comando use si existe la activa y si no existe la crea y la pone activa.
Cuando hablamos de collections en MongoDB, estamos hablando en equivalencia a una tabla de RDBMS, por tanto una collection es, una agrupación de documentos MongoDB. Una colección existe dentro de una sola base de datos, pero no aplican un esquema propiamente dicho. Los documentos de una colección pueden tener diferentes campos y por lo general, todos los documentos de una colección tienen un propósito similar. Cuando hacemos mención a un documento, nos estamos refiriendo a un registro en una colección MongoDB y la unidad básica de datos. Los documentos podríamos decir que son algo así como los análogos a los objetos JSON, pero existen en la base de datos en un formato BSON, que viene a ser un formato de serialización que se utiliza para almacenar los documentos y hacer llamadas a procedimientos remotos en MongoDB. “BSON” siginifca “binary” y “JSON” y BSON es una representación de documentos JSON. Si quieres ampliar más información te dejo este enlace a la página oficial.
¿cómo podemos crearnos una colección con objetos?
En principio vamos a crearnos algo sencillo, para ver con más claridad dicha creación y después veremos algunas estructuras algo más complejas. Si seguimos en la misma shell de MongoDB, debemos ejecutar el comando:
db.things.insert({“a” : 1, “b” : 2}) ====> things es un collection y los que tenemos en {“a” : 1, “b” : 2} es un objeto de pares de clave – valor. Fíjate bien en la nomenclatura, que es muy importante no cometer errores, cada elemento de pares y valores, se determina por “clave” : valor como “a”: 1 o “type” : “sport”…etc. Cuando tenemos varios el separador es una coma “,”.
Ahora veamos, cómo podríamos hacer una llamada Asynchronous o Synchronous desde NodeIS y desde MongoDB:
1) Desde MongoDB tenemos preparado un script para poder hacer una búsqueda de de nuestro collect things de una forma synchronous
// Find one document in our collection
var doc = db.things.findOne();
// Print the result
printjson(doc);
2) si lo ejecutamos como una aplicación NodeJS lo haremos de forma asynchronous, tal como lo hemos montado:
var MongoClient = require(‘mongodb’).MongoClient;
MongoClient.connect(‘mongodb://127.0.0.1:27017/csp‘, function(err, db) {
if(err) throw err;
// Find one document in our collection
db.collection(‘things‘).findOne({}, function(err, doc) {
// Print the result
console.dir(doc);
// Close the DB
db.close();
});
// Declare success
console.dir(“Called findOne!”);
});
La ejecución de ambos casos lo haríamos de la forma siguiente;
# Run mongo shell example
mongo script.js
# Run node.js example
node app.js
Seguro que se ta ha pasado por la mente, la diferencia entre hacer un find() o un findOne(), pues te lo muestro y verás por ti mismo la diferencia:
> db.getCollection(“things”).find() -> Nos devuelve todos
{ “_id” : ObjectId(“520d2ee81a813b88ff0bb905”), “a” : 1, “b” : 2 }
{ “_id” : ObjectId(“520d36271a813b88ff0bb906”), “c” : 3, “d” : 4 }
{ “_id” : ObjectId(“520d36491a813b88ff0bb907”), “e” : 5, “f” : 6 }
> db.getCollection(“things”).findOne() -> nos devuelve únicamente el primero
{ “_id” : ObjectId(“520d2ee81a813b88ff0bb905”), “a” : 1, “b” : 2 }
o también podríamos hacerlo haciendo:
> db.things.findOne()
{ “_id” : ObjectId(“520d2ee81a813b88ff0bb905”), “a” : 1, “b” : 2 }
Un planteamiento sano que deberíamos realizar es ¿cuándo debo utilizar una NoSQL, en nuestro caso MongoDB? pensemos lo siguiente. Imagina que tenemos un Blog en el que disponemos de varias tablas relacionales en MySQL por ejemplo, tenemos una tabla de post, otra de comentarios, otra de autores de los post y además los tags, los post tags y los post comments para relacionar los post y los tags. Ya puedes hacerte una idea, que nuestro schema de base de datos, estará compuesto de seis tablas, por lo que si queremos hacer una consulta, por ejemplo, todos los posts con los comentarios y los tags asociados, necesitaremos que estén implicadas 6 tablas, verdad?
Pues veamos ahora cómo podemos modelar este blog de tablas relacionales a MongoDB y cómo quedaría nuestro schema. Necesitamos dos collections uno para alojar toda la información de los post y otra collections de autores, Vemos como sería:
post { title: “My first tirle”, author : “Carlos Sánchez Pérez” , date : “19/08/2013”, comments : [{name: “Antonio López”, comment : “my comment” }, { …. } ]tags : [“tag1″,”tag2″,”tag3”]}
autor { _id : “Carlos Sánchez Pérez “, password; “”,…….. }
Por tanto, las 6 tablas que antes implicábamos para ver toda la información, en el caso de nuestro schema de MongoDB, únicamente necesitamos una collections, post, para ver la misma información. Entendemos que no siempre es tan fácil el poder determinar que necesidad tenemos y en este caso decidimos eficacia y rapidez. Si quieres ampliar algo más de información, te dejo un post que escribí hace tiempo sobre Bases de Datos: RDBMS vs No-SQL. Seguiremos hablando en próximos post.