Node.js MongoDB Tutorial con ejemplos

La mayorรญa de las aplicaciones web modernas tienen algรบn tipo de sistema de almacenamiento de datos en el backend. Por ejemplo, si se toma el caso de una aplicaciรณn de compras web, datos como el precio de un artรญculo se almacenarรญan en la base de datos.

El marco Node js puede trabajar con bases de datos tanto relacionales (como Oracle y MS SQL Server) y bases de datos no relacionales (como MongoDB). En este tutorial, veremos cรณmo podemos usar bases de datos desde aplicaciones de Node js.

Bases de datos Node.js y NoSQL

A lo largo de los aรฑos, las bases de datos NoSQL como MongoDB y para MySQL Se han vuelto bastante populares como bases de datos para almacenar datos. La capacidad de estas bases de datos para almacenar cualquier tipo de contenido y particularmente en cualquier tipo de formato es lo que las hace tan famosas.

Node.js tiene la capacidad de trabajar con ambos MySQL y MongoDB como bases de datos. Para utilizar cualquiera de estas bases de datos, debe descargar y utilizar los mรณdulos necesarios mediante el administrador de paquetes de Node.

Para MySQL, el mรณdulo requerido se llama โ€œmysqlโ€ y para su uso MongoDB el mรณdulo requerido para ser instalado es "Mongoose".

Con estos mรณdulos, puedes realizar las siguientes operaciones en Node.js

  1. Administrar el pool de conexiones: aquรญ es donde puede especificar la cantidad de conexiones. MySQL Conexiones de bases de datos que Node.js debe mantener y guardar.
  2. Crear y cerrar una conexiรณn a una base de datos. En cualquier caso, puede proporcionar una funciรณn de devoluciรณn de llamada que se puede llamar cada vez que se ejecutan los mรฉtodos de conexiรณn "crear" y "cerrar".
  3. Se pueden ejecutar consultas para obtener datos de las respectivas bases de datos para recuperar datos.
  4. La manipulaciรณn de datos, como insertar, eliminar y actualizar datos, tambiรฉn se puede lograr con estos mรณdulos.

Para los temas restantes, veremos cรณmo podemos trabajar con MongoDB bases de datos dentro Node.js.

El uso de MongoDB y Node.js

Como se discutiรณ en el tema anterior, MongoDB es una de las bases de datos mรกs populares utilizadas junto con Node.js.

Durante este capรญtulo veremos

ยฟCรณmo podemos establecer conexiones con un MongoDB base de datos de CRISPR Medicine News

ยฟCรณmo podemos realizar las operaciones normales de leer datos de una base de datos, asรญ como insertar, eliminar y actualizar registros en una? MongoDB base de datos.

Para los fines de este capรญtulo, supongamos que tenemos lo siguiente MongoDB datos en su lugar.

Nombre de la base de datos: EmployeeDB

Nombre de la colecciรณn: Empleado

Documents
{
	{Employeeid : 1, Employee Name : Guru99},
	{Employeeid : 2, Employee Name : Joe},
	{Employeeid : 3, Employee Name : Martin},
}
  1. Instalaciรณn de los mรณdulos NPM

Necesita un controlador para acceder a Mongo desde una aplicaciรณn Node. Hay varios controladores Mongo disponibles, pero MongoDB estรก entre los mรกs populares. Para instalar el MongoDB mรณdulo, ejecute el siguiente comando

npm instala mongodb

  1. Crear y cerrar una conexiรณn a un MongoDB base de datos. El siguiente fragmento de cรณdigo muestra cรณmo crear y cerrar una conexiรณn a un MongoDB base de datos.

El uso de MongoDB y Node.js

Explicaciรณn del cรณdigo:

  1. El primer paso es incluir el mรณdulo mongoose, lo cual se realiza mediante la funciรณn require. Una vez que este mรณdulo estรฉ implementado, podemos usar las funciones necesarias disponibles en este mรณdulo para crear conexiones a la base de datos.
  2. A continuaciรณn, especificamos nuestra cadena de conexiรณn a la base de datos. En la cadena de conexiรณn, se pasan 3 valores clave.
  • El primero es 'mongodb', que especifica que nos estamos conectando a una base de datos mongoDB.
  • El siguiente es "localhost", lo que significa que nos estamos conectando a una base de datos en la mรกquina local.
  • El siguiente es 'EmployeeDB' que es el nombre de la base de datos definida en nuestro MongoDB base de datos.
  1. El siguiente paso es conectarnos a nuestra base de datos. La funciรณn connect toma nuestra URL y tiene la posibilidad de especificar una funciรณn de devoluciรณn de llamada. Se llamarรก cuando se abra la conexiรณn a la base de datos. Esto nos da la oportunidad de saber si la conexiรณn a la base de datos fue exitosa o no.
  2. En la funciรณn, escribimos la cadena โ€œConexiรณn establecidaโ€ en la consola para indicar que se creรณ una conexiรณn exitosa.
  3. Finalmente, cerramos la conexiรณn usando la declaraciรณn db.close.

Si el cรณdigo anterior se ejecuta correctamente, la cadena "Conectado" se escribirรก en la consola como se muestra a continuaciรณn.

El uso de MongoDB y Node.js

  1. Consulta de datos en un MongoDB base de datos de CRISPR Medicine News - Utilizando la MongoDB controlador tambiรฉn podemos recuperar datos del MongoDB base de datos. La siguiente secciรณn mostrarรก cรณmo podemos usar el controlador para recuperar todos los documentos de nuestra colecciรณn de Empleados. en nuestra base de datos EmployeeDB. Esta es la colecciรณn de nuestra MongoDB base de datos, que contiene todos los documentos relacionados con los empleados. Cada documento tiene una identificaciรณn de objeto, un nombre de empleado y una identificaciรณn de empleado para definir los valores del documento.

El uso de MongoDB y Node.js

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

    var cursor = db.collection('Employee').find();

    cursor.each(function(err, doc) {

        console.log(doc);

    });
});

Explicaciรณn del cรณdigo:

  1. En el primer paso, estamos creando un cursor (un cursor es un puntero que se utiliza para seรฑalar los distintos registros obtenidos de una base de datos. El cursor se utiliza luego para iterar a travรฉs de los distintos registros de la base de datos. Aquรญ estamos definiendo un nombre de variable llamado cursor que se utilizarรก para almacenar el puntero a los registros obtenidos de la base de datos) que apunta a los registros que se obtienen de la colecciรณn MongoDb. Tambiรฉn tenemos la posibilidad de especificar la colecciรณn 'Empleado' de la que obtener los registros. La funciรณn find() se utiliza para especificar que queremos recuperar todos los documentos de la MongoDB colecciรณn.
  2. Ahora estamos iterando a travรฉs de nuestro cursor y para cada documento en el cursor vamos a ejecutar una funciรณn.
  3. Nuestra funciรณn simplemente va a imprimir el contenido de cada documento a la consola.

Nota: - Tambiรฉn es posible recuperar un registro particular de una base de datos. Esto se puede hacer especificando la condiciรณn de bรบsqueda en la funciรณn find(). Por ejemplo, supongamos que si solo desea recuperar el registro que tiene el nombre del empleado como Guru99, entonces esta declaraciรณn se puede escribir de la siguiente manera

var cursor=db.collection('Employee').find({EmployeeName: "guru99"})

Si el cรณdigo anterior se ejecuta correctamente, se mostrarรก el siguiente resultado en su consola.

Salida:

El uso de MongoDB y Node.js

Desde la salida,

  • Podrรกs ver claramente que se han recuperado todos los documentos de la colecciรณn. Esto es posible utilizando el mรฉtodo find() de la conexiรณn mongoDB (db) e iterando por todos los documentos utilizando el cursor.
  1. Insertar documentos en una colecciรณn โ€“ Los documentos se pueden insertar en una colecciรณn utilizando el mรฉtodo insertOne proporcionado por MongoDB Biblioteca. El siguiente fragmento de cรณdigo muestra cรณmo podemos insertar un documento en una colecciรณn de MongoDB.

El uso de MongoDB y Node.js

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

    db.collection('Employee').insertOne({
        Employeeid: 4,
        EmployeeName: "NewEmployee"
    });
}); 

Explicaciรณn del cรณdigo:

  1. Aquรญ estamos usando el mรฉtodo insertOne del MongoDB biblioteca para insertar un documento en la colecciรณn de Empleados.
  2. Estamos especificando los detalles del documento que debe insertarse en la colecciรณn de Empleados.

Si ahora compruebas el contenido de tu MongoDB base de datos, encontrarรก el registro con Employeeid de 4 y EmployeeName de โ€œNewEmployeeโ€ insertado en la colecciรณn Employee.

Nota: La consola no mostrarรก ningรบn resultado porque el registro se estรก insertando en la base de datos y no se puede mostrar ningรบn resultado aquรญ.

Para comprobar que los datos se han insertado correctamente en la base de datos, es necesario ejecutar los siguientes comandos en MongoDB

  1. Utilice la base de datos de empleados
  2. db.Empleado.find({Empleadoid:4})

La primera declaraciรณn garantiza que estรก conectado a la base de datos de EmployeeDb. La segunda declaraciรณn busca el registro que tiene la identificaciรณn de empleado 4.

  1. Actualizar documentos en una colecciรณn โ€“ Los documentos se pueden actualizar en una colecciรณn utilizando el mรฉtodo updateOne proporcionado por MongoDB Biblioteca. El siguiente fragmento de cรณdigo muestra cรณmo actualizar un documento en una colecciรณn de MongoDB.

El uso de MongoDB y Node.js

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

    db.collection('Employee').updateOne({
        "EmployeeName": "NewEmployee"
    }, {
        $set: {
            "EmployeeName": "Mohan"
        }
    });
}); 

Explicaciรณn del cรณdigo:

  1. Aquรญ estamos usando el mรฉtodo "updateOne" del MongoDB biblioteca, que se utiliza para actualizar un documento en una colecciรณn mongoDB.
  2. Estamos especificando los criterios de bรบsqueda de quรฉ documento necesita ser actualizado. En nuestro caso, queremos encontrar el documento que tiene el Nombre de Empleado de "Nuevo Empleado".
  3. Luego queremos establecer el valor del nombre del empleado del documento de "Nuevo empleado" a "Mohan".

Si ahora compruebas el contenido de tu MongoDB base de datos, encontrarรก el registro con Employeeid de 4 y EmployeeName de "Mohan" actualizado en la colecciรณn de Empleados.

Para comprobar que los datos se han actualizado correctamente en la base de datos, es necesario ejecutar los siguientes comandos en MongoDB

  1. Utilice la base de datos de empleados
  2. db.Empleado.find({Empleadoid:4})

La primera declaraciรณn garantiza que estรก conectado a la base de datos de EmployeeDb. La segunda declaraciรณn busca el registro que tiene la identificaciรณn de empleado 4.

  1. Eliminar documentos de una colecciรณn โ€“ Los documentos se pueden eliminar en una colecciรณn utilizando el mรฉtodo "deleteOne" proporcionado por el MongoDB Biblioteca. El siguiente fragmento de cรณdigo muestra cรณmo eliminar un documento en una colecciรณn de MongoDB.

El uso de MongoDB y Node.js

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

    db.collection('Employee').deleteOne(

        {
            "EmployeeName": "Mohan"
        }

    );
}); 

Explicaciรณn del cรณdigo:

  1. Aquรญ estamos usando el mรฉtodo "deleteOne" del MongoDB biblioteca, que se utiliza para eliminar un documento en una colecciรณn mongoDB.
  2. Estamos especificando los criterios de bรบsqueda de quรฉ documento debe eliminarse. En nuestro caso, queremos encontrar el documento que tiene el nombre de empleado "Mohan" y eliminarlo.

Si ahora compruebas el contenido de tu MongoDB base de datos, encontrarรก el registro con Employeeid de 4 y EmployeeName de "Mohan" eliminado de la colecciรณn de Empleados.

Para comprobar que los datos se han actualizado correctamente en la base de datos, es necesario ejecutar los siguientes comandos en MongoDB

  1. Utilice la base de datos de empleados
  2. db.Empleado.find()

La primera declaraciรณn garantiza que estรก conectado a la base de datos de EmployeeDb. La segunda declaraciรณn busca y muestra todos los registros en la colecciรณn de empleados. Aquรญ podrรกs ver si el registro ha sido eliminado o no.

Cรณmo crear una aplicaciรณn Node Express con MongoDB para almacenar y servir contenido

Creaciรณn de una aplicaciรณn con una combinaciรณn de uso express y MongoDB es bastante comรบn hoy en dรญa.

Cuando se trabaja con JavaScript aplicaciones basadas en web, normalmente se utilizarรก aquรญ el tรฉrmino pila MEAN.

  • El tรฉrmino pila MEAN se refiere a una colecciรณn de JavaTecnologรญas basadas en scripts utilizadas para desarrollar aplicaciones web.
  • MEAN es un acrรณnimo de MongoDB, ExpressJS, angularjs, y Node.js.

Por lo tanto, siempre es bueno entender cรณmo funcionan Node.js y MongoDB trabajar juntos para ofrecer aplicaciones que interactรบan con bases de datos backend.

Veamos un ejemplo simple de cรณmo podemos usar "express" y "MongoDB" juntos. Nuestro ejemplo harรก uso de la misma colecciรณn de Empleados en el MongoDB Base de datos de EmployeeDB.

Ahora incorporaremos Express para mostrar los datos en nuestra pรกgina web cuando asรญ lo solicite el usuario. Cuando nuestra aplicaciรณn se ejecuta en Node.js, es posible que sea necesario buscar la URL http://localhost:3000/Employeeid.

Cuando se inicia la pรกgina, se mostrarรกn todos los ID de empleados de la colecciรณn Employee. Veamos el fragmento de cรณdigo en secciones que nos permitirรก lograr esto.

Paso 1) Definir todas las bibliotecas que deben usarse en nuestra aplicaciรณn, que en nuestro caso es tanto la MongoDB y biblioteca exprรฉs.

Cree una aplicaciรณn Node Express con MongoDB

Explicaciรณn del cรณdigo:

  1. Estamos definiendo nuestra biblioteca 'express', que se utilizarรก en nuestra aplicaciรณn.
  2. Estamos definiendo nuestro 'MongoDB' biblioteca, que se utilizarรก en nuestra aplicaciรณn para conectarse a nuestro MongoDB base de datos.
  3. Aquรญ estamos definiendo la URL de nuestra base de datos a la que conectarnos.
  4. Finalmente, estamos definiendo una cadena que se utilizarรก para almacenar nuestra colecciรณn de identificaciones de empleados que deberรกn mostrarse en el navegador mรกs adelante.

Paso 2) En este paso, ahora obtendremos todos los registros de nuestra colecciรณn "Empleado" y trabajaremos con ellos en consecuencia.

Cree una aplicaciรณn Node Express con MongoDB

Explicaciรณn del cรณdigo:

  1. Estamos creando una ruta a nuestra aplicaciรณn llamada "Employeeid". Entonces, cada vez que alguien navega hacia http://localhost:3000/Employeeid de nuestra aplicaciรณn se ejecutarรก el fragmento de cรณdigo definido para esta ruta.
  2. Aquรญ obtenemos todos los registros de nuestra colecciรณn 'Empleado' a travรฉs del comando db.collection('Employee').find(). Luego asignamos esta colecciรณn a una variable llamada cursor. Usando esta variable de cursor podremos navegar por todos los registros de la colecciรณn.
  3. Ahora estamos usando la funciรณn cursor.each() para navegar por todos los registros de nuestra colecciรณn. Para cada registro, definiremos un fragmento de cรณdigo sobre quรฉ hacer cuando se accede a cada registro.
  4. Finalmente, vemos que si el registro devuelto no es nulo, entonces estamos tomando al empleado mediante el comando "item.Employeeid". El resto del cรณdigo es sรณlo para construir un cรณdigo HTML adecuado que permitirรก que nuestros resultados se muestren correctamente en el navegador.

Paso 3) En este paso, enviaremos nuestra salida a la pรกgina web y haremos que nuestra aplicaciรณn escuche en un puerto en particular.

Cree una aplicaciรณn Node Express con MongoDB

Explicaciรณn del cรณdigo:

  1. Aquรญ enviamos todo el contenido que se creรณ en el paso anterior a nuestra pรกgina web. El parรกmetro โ€˜resโ€™ nos permite enviar contenido a nuestra pรกgina web como respuesta.
  2. Estamos haciendo que toda nuestra aplicaciรณn Node.js escuche en el puerto 3000.

Salida:

Cree una aplicaciรณn Node Express con MongoDB

Desde la salida,

  • Muestra claramente que se recuperaron todos los ID de empleado de la colecciรณn Empleado. Esto se debe a que utilizamos el MongoDB controlador para conectarse a la base de datos y recuperar todos los registros de los empleados y posteriormente utilizรณ "express" para mostrar los registros.

Aquรญ estรก el cรณdigo para su referencia.

var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';
var str = "";

app.route('/Employeeid').get(function(req, res)

    {
        MongoClient.connect(url, function(err, db) {
            var cursor = db.collection('Employee').find();
            //noinspection JSDeprecatedSymbols
            cursor.each(function(err, item) {

                if (item != null) {
                    str = str + "   Employee id  " + item.Employeeid + "</br>";
                }
            });
            res.send(str);
            db.close();
        });
    });

var server = app.listen(3000, function() {}); 

Nota: cursor.each puede estar obsoleto segรบn la versiรณn de su MongoDB conductor. Puede agregar //noinspection JSDeprecatedSymbols antes de cursor.each para evitar el problema. Alternativamente, puedes usar forEach. A continuaciรณn se muestra el cรณdigo de muestra usando forEach

var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';
var str = "";

app.route('/Employeeid').get(function(req, res) {
   MongoClient.connect(url, function(err, db) {
       var collection = db.collection('Employee');
       var cursor = collection.find({});
       str = "";
       cursor.forEach(function(item) {
           if (item != null) {
                    str = str + "    Employee id  " + item.Employeeid + "</br>";
                }
       }, function(err) {
           res.send(err);
           db.close();
          }
       );
   });
});
var server = app.listen(8080, function() {});

Resumen

  • Node.js se utiliza junto con NoSQL bases de datos para crear muchas aplicaciones web modernas. Algunas de las bases de datos comunes utilizadas son MySQL y MongoDB.
  • Uno de los mรณdulos comunes utilizados para trabajar con MongoDB bases de datos es un mรณdulo llamado 'MongoDB.' Este mรณdulo se instala a travรฉs del administrador de paquetes de Node.
  • Con el MongoDB mรณdulo, es posible consultar registros en una colecciรณn y realizar las operaciones normales de actualizaciรณn, eliminaciรณn e inserciรณn.
  • Finalmente, una de las prรกcticas modernas es utilizar el marco expreso junto con MongoDB para ofrecer aplicaciones modernas. El marco Express puede hacer uso de los datos devueltos por el MongoDB controlador y mostrar los datos al usuario en la pรกgina web en consecuencia.

Resumir este post con: