clicko-node-mongo-programacion

En esta guía os mostraré como realizar las operaciones básicas CRUD (créate, read, update, delete) de un modelo de datos en Node.JS utilizando MongoDB como base de datos.

Primero de todo deberemos inicializar el proyecto node.JS:

  • En el directorio del proyecto ejecutaremos el siguiente comando:
    $ npm init
  • Ahora instalaremos las dependencias del driver de conexión para mongoDB:

    $ npm install mongodb --save

 

Ahora deberemos arrancar el servidor MongoDB:

  • Descargaremos el servidor MongoDB correspondiente en: https://www.mongodb.com/download-center/v2/community
  • Crearemos un directorio dónde se alojará la base de datos (en nuestro caso utilizaremos el directorio /db).
  • Finalmente instalaremos e iniciaremos el proceso mongod.
    $ mongod –dbpath=/db

 

Conectarse a MongoDB

Crearemos un fichero index.js y añadiremos el siguiente código:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

// URL del servidor
const url = 'mongodb://localhost:27017';

// Nombre Base de datos
const dbName = 'myproject';

// Método de conexión
MongoClient.connect(url, function(err, client) {
  assert.equal(null, err);
  console.log("Conectado correctamente al servidor");

  const db = client.db(dbName);

  client.close();
});

Y ahora ejecutamos la aplicación con el siguiente comando para ver el resultado:

$ node index.js

 

Insertar un documento

Añadiremos la siguiente función en index.js:

const insertDocuments = function(db, callback) {
  // Obtener la colección de documentos
  const collection = db.collection('documents');
  // Insertar
  collection.insertMany([
    {a : 1}, {a : 2}, {a : 3}
  ], function(err, result) {
    assert.equal(err, null);
    assert.equal(3, result.result.n);
    assert.equal(3, result.ops.length);
    console.log("Insertados 3 documentos en la colección");
    callback(result);
  });
}

 

Buscar un documento

Añadiremos la siguiente función en index.js:

const findDocuments = function(db, callback) {
  // Obtener la colección de documentos
  const collection = db.collection('documents');
  // Buscar algunos documentos
  collection.find({}).toArray(function(err, docs) {
    assert.equal(err, null);
    console.log("Encontrados los siguientes documentos");
    console.log(docs)
    callback(docs);
  });
}

 

Actualizar un documento

Añadiremos la siguiente función en index.js:

const updateDocument = function(db, callback) {
  // Obtener la colección de documentos
  const collection = db.collection('documents');
  // Actualizamos el campo b del documento con a = 2
  collection.updateOne({ a : 2 }
    , { $set: { b : 1 } }, function(err, result) {
    assert.equal(err, null);
    assert.equal(1, result.result.n);
    console.log("Actualizado el documento con éxito");
    callback(result);
  });  
}

 

Eliminar un documento

Añadiremos la siguiente función en index.js:

const removeDocument = function(db, callback) {
  // Obtener la colección de documentos
  const collection = db.collection('documents');
  // Eliminamos el documento con a = 3
  collection.deleteOne({ a : 3 }, function(err, result) {
    assert.equal(err, null);
    assert.equal(1, result.result.n);
    console.log("Eliminado el documento con a = 3");
    callback(result);
  });    
}

 

Resultado final del archivo index.js:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

// URL del servidor
const url = 'mongodb://localhost:27017';

// Nombre base de datos
const dbName = 'myproject';

// Método de conexión
MongoClient.connect(url, function(err, client) {
  assert.equal(null, err);
  console.log("Connected successfully to server");

  const db = client.db(dbName);

  insertDocuments(db, function() {
    updateDocument(db, function() {
      removeDocument(db, function() {
        client.close();
      });
    });
  });
});

Ahora ejecutaremos la aplicación para ver el funcionamiento de las diferentes operaciones:

$ node index.js

En el próximo capítulo, hablaremos de cómo utilizar y operar con mongoDB con el driver de conexión para Python.

 
 

Facebook
Facebook
LinkedIn
Full stack engineer - Analista programador Web

Full Stack Engineer – Analista Programador Web