Ya hemos mostrado como acceder a nuestro motor de base de datos MySQL con NodeJS ( ver aquí) pero NodeJs se utiliza actualmente con un motor en particular que está dando excelentes resultados en cuanto a prestaciones y “features” nos referimos a MongoDB, de hecho estos 2 son parte de un FullStack Framework (Un Framework para desarrollo web que abarca todas las facetas del mismo) llamado MEAN que de seguro lo conocéis. Este artículo os mostrará como conectarnos a el y realizar consultas.
Instalando cliente MongoDB
Lo primero que debemos realizar es la instalación del cliente MongoDB para NodeJs, para ello simplemente desde nuestra ventana de comandos utilizamos el gestor de paquetes:
1 | npm install mongodb |
Creando nuestra conexión
Ahora que ya tenemos instalado el driver de MongoDB, vamos a crear nuestra conexión:
1 2 3 | var MongoClient = require('mongodb').MongoClient, test = require('assert'); var url = 'mongodb://localhost:27017/'; |
Conectándonos a la Base de Datos
Con nuestra conexión definida lo primero que podemos realizar es conectarnos a la base de datos para ello hacemos uso del método connect():
1 2 3 4 | MongoClient.connect(url, function(err, db) { }); |
Dentro de dicha función podemos llamar a las consultas a nuestro motor de base de datos, por ejemplo, si queremos conocer el total de bases de datos que tenemos en nuestro servidor hacemos lo siguiente:
1 2 3 4 5 6 7 8 9 | MongoClient.connect(url, function(err, db) { var adminDb = db.admin(); adminDb.listDatabases(function(err, dbs) { for(i=0;i<dbs.databases.length;i++){ console.log(dbs.databases[i].name); } db.close(); }); }); |
Con una sencilla iteración podemos recorrer el cursor que nos devuelve el método listDatabases y obtener el nombre de las bases de datos ( recordemos que MongoDB utiliza la notación BSON ).
Consultando registros
Ahora es el turno de realizar una sencilla consulta, para ello hacemos uso del método find(), todo siempre dentro de nuestro método connect():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var MongoClient = require('mongodb').MongoClient, test = require('assert'); var url = 'mongodb://localhost:27017/TODO'; MongoClient.connect(url, function(err, db) { var col = db.collection('todos'); col.find({nombre:'Oscar'}).toArray(function(err, items) { if (err) { console.log(' Error:', err); } else { console.log(items); } db.close(); }); }); |
Tenemos que destacar varios puntos:
- La base de datos la hemos añadido a la URL de conexion para que el driver se conecte directamente a dicha base de datos.
- El método collection(), nos permite seleccionar la colección sobre la que deseamos trabajar.
- Tal como en shell de MongoDB, el método find(), nos permite realizar consultas sobre dicha colección, en este ejemplo hemos ejecutado una consulta vacia pero podemos ser más especificos.
- Nuevamente mostramos la información del cursor devuelto, en este caso mostramos el campo “nombre” del primer registro que nos devuelve MongoDB.
Consultando con parámetros
Como comentamos anteriormente el método find(), puede aceptar parámetros de búsqueda para refinar más la consulta, por ejemplo:
1 | col.find({nombre:'Oscar'}).toArray(function(err, items) { |
Aquí MongoDB buscará todos los documentos donde el campo “nombre” sean “Oscar”.
Te Puede Interesar:
Utilizando NodeJs como cliente de aplicaciones
Haz caché de contenido estático con NodeJs
Gestiona la subida de ficheros con NodeJS