MongoDB com Node.js na Prática | Criando uma API CRUD Completa com Express
Se você está aprendendo Node.js e deseja criar aplicações profissionais, em algum momento precisará armazenar dados em um banco de dados. Uma das combinações mais utilizadas no mercado é Node.js + Express + MongoDB + Mongoose, permitindo desenvolver APIs REST modernas, rápidas e escaláveis.
Neste artigo você aprenderá como conectar uma aplicação Node.js ao MongoDB, criar uma API REST completa utilizando Express e implementar todas as operações do CRUD (Create, Read, Update e Delete) utilizando o Mongoose.
Ao final, você terá uma estrutura semelhante à utilizada em projetos reais.
Assista à aula completa
Antes de começar, você também pode acompanhar a aula prática no YouTube, onde todo o projeto é desenvolvido passo a passo.
Vídeo: MongoDB com Node.js na Prática | Criando uma API CRUD Completa com Express
O que é o MongoDB?
O MongoDB é um banco de dados NoSQL orientado a documentos.
Ao contrário dos bancos relacionais tradicionais, como MySQL ou PostgreSQL, ele não trabalha com tabelas e linhas.
Os dados são armazenados em documentos no formato semelhante ao JSON.
Exemplo:
{
"nome": "Notebook",
"preco": 3500,
"estoque": 12
}
Essa estrutura oferece maior flexibilidade para armazenar informações sem precisar alterar tabelas sempre que novos campos forem adicionados.
O que é o Mongoose?
O Mongoose é uma biblioteca para Node.js responsável por facilitar a comunicação entre a aplicação e o MongoDB.
Com ele podemos:
- criar Schemas;
- definir Models;
- validar dados;
- consultar documentos;
- atualizar registros;
- excluir documentos.
Na prática, o Mongoose funciona como uma camada entre sua aplicação e o banco de dados.
Tecnologias utilizadas
Neste projeto utilizamos:
- JavaScript
- Node.js
- Express.js
- MongoDB
- Mongoose
- Thunder Client
- MongoDB Compass
Estrutura do projeto
Uma boa organização facilita a manutenção da aplicação.
Nossa estrutura fica semelhante a esta:
projeto/
controllers/
produtoController.js
models/
Produto.js
routes/
produtoRoutes.js
config/
database.js
server.js
Separar responsabilidades deixa o código mais organizado e facilita futuras evoluções.
Instalando as dependências
Primeiro inicialize o projeto:
npm init -y
Depois instale as bibliotecas:
npm install express mongoose
Caso utilize atualização automática do servidor:
npm install --save-dev nodemon
Criando a conexão com o MongoDB
Após instalar as dependências, criamos a conexão.
Exemplo:
mongoose.connect("mongodb://localhost:27017/produtos");
Uma curiosidade interessante é que o MongoDB cria o banco automaticamente quando os primeiros dados são gravados.
Ou seja, não é necessário criar o banco manualmente antes de utilizar.
Criando o Schema
O Schema define quais informações serão armazenadas.
Exemplo:
const ProdutoSchema = new mongoose.Schema({
nome: String,
preco: Number,
estoque: Number
});
Ele funciona como um “modelo” para todos os documentos daquela coleção.
Criando o Model
Após definir o Schema, criamos o Model.
const Produto = mongoose.model("Produto", ProdutoSchema);
É através do Model que realizamos todas as operações no banco.
Criando o Controller
O Controller concentra toda a lógica da aplicação.
Por exemplo:
- cadastrar produtos;
- listar produtos;
- buscar por ID;
- atualizar registros;
- excluir documentos.
Essa separação torna o projeto muito mais organizado.
Criando as rotas
As rotas são responsáveis por receber as requisições HTTP.
Exemplo:
GET
POST
PUT
DELETE
Cada rota chama um método do Controller correspondente.
Operações do CRUD
CREATE
Insere novos documentos no banco.
Exemplo:
POST /produtos
READ
Lista todos os produtos cadastrados.
GET /produtos
Também podemos buscar um documento específico:
GET /produtos/:id
UPDATE
Atualiza um documento existente.
PUT /produtos/:id
O Mongoose localiza o documento e altera apenas os campos informados.
DELETE
Remove um documento do banco.
DELETE /produtos/:id
Após a exclusão, o documento deixa de existir na coleção.
Testando a API
Durante o desenvolvimento utilizamos o Thunder Client, uma extensão do Visual Studio Code que permite enviar requisições HTTP.
Com ela podemos testar facilmente:
- GET
- POST
- PUT
- DELETE
Sem precisar criar um frontend.
Visualizando os dados
Enquanto enviamos requisições pelo Thunder Client, podemos acompanhar os documentos sendo criados no MongoDB Compass, interface gráfica oficial do MongoDB.
Isso facilita muito o aprendizado e a depuração da aplicação.
Vantagens dessa arquitetura
Separar a aplicação em:
- Models
- Controllers
- Routes
permite:
- código organizado;
- manutenção mais simples;
- reutilização de lógica;
- facilidade para trabalhar em equipe;
- crescimento do projeto.
Essa estrutura é utilizada em inúmeros projetos profissionais.
Principais dúvidas de quem está começando
O MongoDB cria o banco automaticamente?
Sim. O banco e a coleção são criados quando os primeiros documentos são gravados.
Preciso criar tabelas?
Não.
O MongoDB utiliza coleções e documentos.
O Mongoose é obrigatório?
Não.
É possível utilizar o driver oficial do MongoDB.
Porém, o Mongoose facilita bastante o desenvolvimento e é amplamente utilizado.
Posso utilizar MongoDB em aplicações grandes?
Sim.
Empresas de todos os tamanhos utilizam MongoDB em produção devido à sua flexibilidade e escalabilidade.
Próximos passos
Depois de aprender CRUD com MongoDB, você pode evoluir para:
- autenticação com JWT;
- upload de imagens;
- validações avançadas;
- relacionamento entre coleções;
- paginação;
- filtros;
- deploy da API.
Esses assuntos são fundamentais para desenvolver aplicações completas.
Conclusão
Neste projeto você aprendeu como criar uma API REST utilizando Node.js, Express, MongoDB e Mongoose, implementando todas as operações do CRUD em uma estrutura organizada e próxima da utilizada em aplicações reais.
Esse conhecimento serve como base para praticamente qualquer sistema backend desenvolvido com JavaScript.
Se você gostou deste conteúdo, continue acompanhando a série de Backend aqui no blog e no canal Desvendando o Código, onde publicamos novos projetos práticos todas as semanas.
Continue aprendendo
➡️ Assista à live completa deste projeto.
➡️ Veja também os artigos sobre Express.js, APIs REST, Node.js e JavaScript disponíveis aqui no blog.
➡️ Inscreva-se no canal Desvendando o Código para acompanhar novos projetos práticos de desenvolvimento Full Stack.


