DEV Community

Cover image for Integração do MongoDB com Node.js – Um Guia Completo
Lucas Pereira de Souza
Lucas Pereira de Souza

Posted on

Integração do MongoDB com Node.js – Um Guia Completo

MongoDB é uma das bases de dados NoSQL mais populares, amplamente usada por desenvolvedores para criar aplicações escaláveis e flexíveis. Juntamente com Node.js, que é uma plataforma amplamente adotada para desenvolvimento de backend, você pode construir APIs eficientes e aplicações robustas. Neste blog post, vamos explorar como configurar o MongoDB com Node.js, desde a instalação até a execução de operações básicas de CRUD (Create, Read, Update, Delete).


1. O que é o MongoDB?

MongoDB é uma base de dados NoSQL orientada a documentos. Em vez de armazenar dados em tabelas, como em bancos de dados relacionais, o MongoDB armazena documentos em formato JSON, que são chamados de BSON (Binary JSON). Isso oferece flexibilidade na modelagem de dados e facilita a escalabilidade horizontal.

2. Por que usar MongoDB com Node.js?

  • JSON nativo: Node.js usa JavaScript, e o MongoDB armazena dados no formato JSON. Essa combinação resulta em uma integração suave e eficiente.
  • Escalabilidade: O MongoDB é altamente escalável e ideal para aplicações modernas que precisam crescer rapidamente.
  • Desempenho: Com sua estrutura de documentos, o MongoDB é otimizado para leituras rápidas, gravações e consultas dinâmicas.
  • Comunidade: Tanto MongoDB quanto Node.js possuem uma comunidade ativa, garantindo recursos abundantes e atualizações frequentes.

3. Configurando o MongoDB com Node.js

Passo 1: Instalar o MongoDB

Antes de mais nada, você precisa instalar o MongoDB. Dependendo do seu sistema operacional, siga as instruções no site oficial MongoDB Installation.

Passo 2: Criar um projeto Node.js

Crie um novo diretório para o seu projeto e inicie um projeto Node.js:

mkdir mongo-node-app
cd mongo-node-app
npm init -y
Enter fullscreen mode Exit fullscreen mode
Passo 3: Instalar o driver do MongoDB

O próximo passo é instalar o driver oficial do MongoDB para Node.js:

npm install mongodb
Enter fullscreen mode Exit fullscreen mode
Passo 4: Conectar ao MongoDB

Agora, crie um arquivo index.js para configurar a conexão ao MongoDB. Vamos utilizar o MongoClient para conectar ao banco de dados.

const { MongoClient } = require('mongodb');

async function connectDB() {
    const uri = "mongodb://localhost:27017"; // URL do MongoDB local
    const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

    try {
        await client.connect();
        console.log("Conectado ao MongoDB");

        const db = client.db("mydatabase");
        return db;
    } catch (err) {
        console.error("Erro ao conectar ao MongoDB", err);
    } finally {
        // Fechar a conexão
        await client.close();
    }
}

connectDB();
Enter fullscreen mode Exit fullscreen mode

4. Operações CRUD com MongoDB

1. Create (Criar)

Para adicionar documentos à coleção, podemos usar o método insertOne() ou insertMany().

async function createDocument(db) {
    const collection = db.collection("users");

    const newUser = {
        name: "Lucas",
        age: 25,
        email: "lucas@example.com"
    };

    const result = await collection.insertOne(newUser);
    console.log(`Documento inserido com o ID: ${result.insertedId}`);
}
Enter fullscreen mode Exit fullscreen mode
2. Read (Ler)

Para buscar documentos em uma coleção, usamos find() ou findOne().

async function readDocuments(db) {
    const collection = db.collection("users");

    const users = await collection.find({ age: { $gte: 18 } }).toArray();
    console.log(users);
}
Enter fullscreen mode Exit fullscreen mode
3. Update (Atualizar)

Para atualizar um documento, usamos updateOne() ou updateMany().

async function updateDocument(db) {
    const collection = db.collection("users");

    const result = await collection.updateOne(
        { name: "Lucas" },
        { $set: { email: "lucas.new@example.com" } }
    );

    console.log(`Documentos atualizados: ${result.modifiedCount}`);
}
Enter fullscreen mode Exit fullscreen mode
4. Delete (Deletar)

Para remover documentos, usamos deleteOne() ou deleteMany().

async function deleteDocument(db) {
    const collection = db.collection("users");

    const result = await collection.deleteOne({ name: "Lucas" });
    console.log(`Documentos deletados: ${result.deletedCount}`);
}
Enter fullscreen mode Exit fullscreen mode

5. Melhorando a Estrutura do Projeto

Para um projeto de larga escala, é melhor modularizar a conexão ao MongoDB e as operações de CRUD. Por exemplo, podemos ter um módulo de conexão separado e serviços dedicados para cada entidade.

Exemplo de Conexão Modular
// db.js
const { MongoClient } = require('mongodb');

const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

async function connectDB() {
    await client.connect();
    const db = client.db("mydatabase");
    return db;
}

module.exports = { connectDB };
Enter fullscreen mode Exit fullscreen mode
Usando o Módulo de Conexão
// index.js
const { connectDB } = require('./db');

async function main() {
    const db = await connectDB();

    // Executar operações de CRUD
    await createDocument(db);
    await readDocuments(db);
    await updateDocument(db);
    await deleteDocument(db);
}

main();
Enter fullscreen mode Exit fullscreen mode

6. Conclusão

MongoDB e Node.js formam uma combinação poderosa para construir APIs escaláveis e aplicações web modernas. Com a flexibilidade do MongoDB e o ambiente JavaScript do Node.js, você pode manipular dados de forma rápida e eficiente. Este guia oferece uma base sólida para integrar o MongoDB ao seu projeto Node.js, desde a configuração inicial até as operações de CRUD.

Se você deseja aprofundar no assunto, considere explorar mais funcionalidades como indexação, agregações e replicação no MongoDB.


Dicas Finais:

  • Mongoose: Embora o driver oficial seja eficiente, bibliotecas como o Mongoose oferecem uma abstração mais amigável com schemas e validação.
  • Escalabilidade: Leve em consideração o particionamento e replicação em produção para escalar sua aplicação com MongoDB.

Espero que esse guia tenha sido útil para integrar MongoDB com Node.js!

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay