lunes, 29 de noviembre de 2010

Minitutorial: Vistazo rápido a MongoDB

En las próximas líneas se presenta un pequeño y rápido tutorial que abarca las nociones más básicas y elementales de MongoDB y la consola mongo. Este minitutorial está extraído del Tiny MongoDB Browser Shell (http://try.mongodb.org), el cual recomiendo utilizar para una toma de contacto y entender los conceptos.

1. Consola JavaScript
La primera cosa a destacar es que la consola MongoDB está basada en JavaScript.
De esta manera, puedes hacer cosas como éstas:

a = 5;
a * 10;
for(i=0; i<10; i++) { print('hello'); };



2. Documentos
MongoDB es una base de datos basada en documentos. Esto significa que almacenamos los datos como documento, lo cual es similar a los objetos JavaScript. A continuación hay algunos objetos JS de muestra:

var a = {age: 25};
var n = {name: 'Ed', languages: ['c', 'ruby', 'js']};
var student = {name: 'Jim', scores: [75, 99, 87.2]};



3. Guardar
He aquí cómo se guarda un documento en MongoDB:

db.scores.save({a: 99});

Esto dice, "guarda el documento '{a: 99}' en la colección 'scores'."

Para ver si el documento fue guardado:

db.scores.find();


4. Guardar y consultar
Lo siguiente añade algunos documentos a la colección scores:

for(i=0; i<10; i++) { db.scores.save({a: i, exam: 5}) };

Al escribir

db.scores.find();

Verás si se guardaron correctamente. Desde la consola sólo se visualizan 10 resultados al mismo tiempo, por lo que neceistarás el comando 'it' para iterar sobre el resto.


5. Consultas básicas
Vamos a realizar consultas más específicas, por ejemplo, consultando todos los documentos donde a == 2:

db.scores.find({a: 2});

o todos los documentos donde a > 15:

db.scores.find({a: {'$gt': 15}});


6. Operadores de consulta
$gt es uno de los operadores especiales de consulta. He aquí algunos otros:

$lt - '<', $lte - '<=',
$gte - '>=', $ne - '!='
$in - 'está en un array', $nin - '! (no) en array'

db.scores.find({a: {'$in': [2, 3, 4]}});
db.scores.find({a: {'$gte': 2, '$lte': 4}});



7. Actualizaciones
Vamos a crear un par de documentos para actualizarlos después:

db.users.save({name: 'Johnny', languages: ['ruby', 'c']});
db.users.save({name: 'Sue', languages: ['scala', 'lisp']});


Asegúrate de que se han guardado llamando a db.users.find()

Actualizaremos el primer documento mediante:

db.users.update({name: 'Johnny'}, {name: 'Cash', languages: ['english']});


8. Operadores de actualización
La anterior actualización reemplazó el documento entero, pero MongoDB también soporta actualizaciones parciales en los documentos. Por ejemplo, para establecer un valor:

db.users.update({name: 'Cash'}, {'$set': {'age': 50} });

También puedes poner (push) y extraer (pull) elementos de los arrays:

db.users.update({name: 'Sue'}, {'$pull': {'languages': 'scala'} });
db.users.update({name: 'Sue'}, {'$push': {'languages': 'ruby'} });



9. Eliminar datos
Para eliminar todo en una colección:

db.scores.remove();

Para eliminar sólo los documentos coincidentes, agrega un selector de consulta al método remove:

db.users.remove({name: 'Sue'});


10. ¿Lo siguiente?
Hay mucho más que lo mostrado en este minitutorial. Si te ha interesado, te animo a que te descargues MongoDB (http://www.mongodb.org/display/DOCSES/Descarga) y lo pruebes. También puedes consultar la documentación (http://www.mongodb.org/display/DOCSES/Inicio) para más información.