como-usar-mongodb-con-nodejs

Cómo usar una base de datos MongoDB con Node.js

Podemos conectarnos Node.js fácilmente aa MongoDB, una base de datos NoSQL altamente escalable y flexible, puedes conectarte fácilmente desde Node.js utilizando el paquete mongodb.

Cómo conectar node.js a mongodb

En primer lugar, instalamos el paquete mongodb utilizando npm:

npm install mongodb

Este paquete nos permitirá conectarnos y realizar operaciones con la base de datos MongoDB desde Node.js.

Creación del archivo de conexión

Ahora creamos un archivo para manejar la conexión a MongoDB (por ejemplo dbConnection.mjs). En este archivo, utilizaremos el módulo mongodb para conectarnos a la base de datos.

import { MongoClient } from 'mongodb';

const uri = 'mongodb://localhost:27017'; // URL de conexión a tu base de datos
const dbName = 'mydatabase'; // Nombre de tu base de datos

async function connect() {
  try {
    const client = new MongoClient(uri);
    await client.connect();
    const db = client.db(dbName);
    console.log('Conexión a MongoDB establecida.');
    return db;
  } catch (error) {
    console.error('Error al conectar a MongoDB:', error);
    throw error;
  }
}

export default connect;

Asegúrate de reemplazar 'mongodb://localhost:27017' con la URL de conexión correcta para tu base de datos MongoDB, y 'mydatabase' con el nombre de tu base de datos

Uso de la Conexión en tu Aplicación

Ahora que hemos definido la función de conexión en dbConnection.mjs, podemos importarla y utilizarla en cualquier parte de nuestra aplicación para realizar operaciones con la base de datos MongoDB.

Por ejemplo, en otro archivo de tu aplicación app.mjs, podemos utilizar la función connect para obtener una conexión a la base de datos y realizar operaciones como buscar documentos, insertar nuevos datos, actualizar registros, etc.

Vamos a verlo con un ejemplo:

import connect from './dbConnection.mjs';

async function fetchData() {
  const db = await connect();
  try {
    const collection = db.collection('mi_coleccion');
    const result = await collection.find({}).toArray();
    console.log('Documentos obtenidos:', result);
  } catch (error) {
    console.error('Error al obtener datos:', error);
  } finally {
    db.close();
  }
}

fetchData();

En este ejemplo, estamos obteniendo todos los documentos de la colección 'mi_coleccion' y mostrando el resultado en la consola.

Operaciones CRUD

Una vez que tenemos el archivo de conexión, podemos utilizarlo para realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en nuestra base de datos MongoDB desde Node.js.

Creación de datos

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

const url = 'mongodb://localhost:27017';
const dbName = 'mi_base_de_datos';

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
  if (err) throw err;

  const db = client.db(dbName);
  const collection = db.collection('mi_coleccion');

  const documentoNuevo = { nombre: 'Ejemplo', edad: 30 };

  collection.insertOne(documentoNuevo, (err, result) => {
    if (err) throw err;
    console.log('Documento insertado correctamente');
    client.close();
  });
});

Lectura de datos

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

const url = 'mongodb://localhost:27017';
const dbName = 'mi_base_de_datos';

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
  if (err) throw err;

  const db = client.db(dbName);
  const collection = db.collection('mi_coleccion');

  collection.find({}).toArray((err, docs) => {
    if (err) throw err;
    console.log('Documentos encontrados:');
    console.log(docs);
    client.close();
  });
});

Actualización de datos

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

const url = 'mongodb://localhost:27017';
const dbName = 'mi_base_de_datos';

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
  if (err) throw err;

  const db = client.db(dbName);
  const collection = db.collection('mi_coleccion');

  const filtro = { nombre: 'Ejemplo' };
  const nuevoValor = { $set: { edad: 35 } };

  collection.updateOne(filtro, nuevoValor, (err, result) => {
    if (err) throw err;
    console.log('Documento actualizado correctamente');
    client.close();
  });
});

Eliminación de datos

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

const url = 'mongodb://localhost:27017';
const dbName = 'mi_base_de_datos';

MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
  if (err) throw err;

  const db = client.db(dbName);
  const collection = db.collection('mi_coleccion');

  const filtro = { nombre: 'Ejemplo' };

  collection.deleteOne(filtro, (err, result) => {
    if (err) throw err;
    console.log('Documento eliminado correctamente');
    client.close();
  });
});

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github github-full