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
Passo 3: Instalar o driver do MongoDB
O próximo passo é instalar o driver oficial do MongoDB para Node.js:
npm install mongodb
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();
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}`);
}
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);
}
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}`);
}
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}`);
}
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 };
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();
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!