MongoDB: Introdução ao MongoDB
O MongoDB é o banco de dados de documentos mais popular do mundo — ele torna a modelagem flexível de dados e as gravações de alto rendimento simples e eficientes.
Este tutorial foi elaborado para desenvolvedores de back-end com conhecimentos básicos de JavaScript e Node.js. Ele começa com os fundamentos do NoSQL e orienta você na criação de aplicativos prontos para produção usando o MongoDB e o Mongoose.
1. O que você vai aprender
- O contexto dos bancos de dados NoSQL e as quatro principais famílias
- A história, a filosofia de design e a evolução das versões do MongoDB
- As principais diferenças entre o modelo de documento e o modelo relacional
- Diferenças entre o formato de dados BSON e o JSON
- Serviço em nuvem MongoDB Atlas x implantação local
- Casos de uso do MongoDB em três principais mercados-alvo (Oriente Médio, Brasil e Japão)
2. A história real de um engenheiro de backend
(1) Desafio: os bancos de dados relacionais não conseguem acompanhar o ritmo
Alice é engenheira de back-end em uma empresa de comércio eletrônico internacional. Recentemente, ela recebeu uma solicitação urgente:
“Nossa tabela
productsjá tem 2 milhões de registros. A equipe de operações precisa inserir 50 mil novos SKUs todos os dias, e cada SKU tem de 10 a 15 atributos dinâmicos (como cor, tamanho, capacidade da bateria e taxa de atualização da tela). Alterar a estrutura da tabela exige o bloqueio do banco de dados por duas horas, e a equipe de negócios já está ficando frustrada com a situação.”
Os problemas que ela enfrenta:
| Questão | Impacto |
|---|---|
| Estrutura rígida da tabela | Sempre que um novo atributo é adicionado, é necessária uma instrução ALTER TABLE, o que afeta os serviços de produção |
| Explosão de campos NULL | 90% dos campos estão NULL, o que desperdiça espaço de armazenamento |
| Baixo desempenho de JOIN | Consultas com junção de várias tabelas levam 5 segundos ou mais para responder ao processar centenas de milhões de registros |
| Baixa taxa de transferência de gravação | Alta sobrecarga para transações relacionais; as operações de inserção ficam lentas em condições de alta simultaneidade |
(2) A solução do MongoDB
Reescreva o sistema de SKU utilizando um modelo de documento, no qual cada produto seja um documento separado no formato JSON.
// MongoDB Document Structure — One document represents an entire product record.
{
_id: ObjectId("..."),
sku: "PHONE-X-256-BLK",
title: "Smartphone X 256GB Black",
price: 599.99,
category: "Electronics",
attributes: { // Nested Documents,No need to JOIN
color: "Black",
storage: "256GB",
screen: "6.5 inch OLED",
battery: "4500mAh",
refresh_rate: "120Hz"
},
tags: ["5g", "amoled", "fast-charging"], // Array Fields
stock: { warehouse_1: 50, warehouse_2: 30 },
created_at: ISODate("2026-07-01T10:00:00Z")
}
(3) Receita
| Dimensão | Relacional (MySQL) | MongoDB |
|---|---|---|
| Adicionar um campo | ALTER TABLE (bloqueio da tabela) | Inserir um novo documento diretamente |
| Armazenamento de campos vazios | Ocupa espaço | Não ocupa espaço |
| Dados heterogêneos | Requer uma coluna JSON ou uma tabela EAV | Suporte nativo |
| Escalabilidade horizontal | Complexa (fragmentação de banco de dados e tabelas) | Fragmentação integrada |
| Taxa de transferência de gravação | 5.000 operações/s | Mais de 50.000 operações/s |
3. O surgimento dos bancos de dados NoSQL
Visão geral do conceito: Os bancos de dados NoSQL (Not Only SQL) surgiram no final da década de 2000, impulsionados pela explosão de dados na internet. Os bancos de dados relacionais tradicionais revelaram três grandes gargalos ao lidar com dados na escala de petabytes, milhões de conexões simultâneas e dados heterogêneos: esquemas fixos incapazes de se adaptar à diversidade de dados, dificuldades no escalonamento horizontal e desempenho extremamente baixo das operações JOIN com grandes volumes de dados. A filosofia central de design do NoSQL é: trocar restrições por desempenho — sacrificando a forte consistência e as junções complexas em troca de escalabilidade horizontal e alta taxa de transferência.
Como funciona: As quatro principais famílias de bancos de dados NoSQL apresentam, cada uma, modelos de dados e garantias de consistência diferentes. Os bancos de dados de chave-valor são os mais simples (operações de leitura e gravação em O(1)), os bancos de dados de documentos são os mais versáteis (modelo semelhante ao JSON), os bancos de dados orientados a colunas se destacam em cenários com grande volume de gravações e os bancos de dados de grafos se destacam em consultas relacionais. Como representante dos bancos de dados de documentos, o MongoDB oferece o melhor equilíbrio entre flexibilidade e recursos de consulta.
(1) Por que o NoSQL é necessário?
No final da década de 2000, o volume de dados provenientes de aplicativos da Internet disparou:
- O Google precisa armazenar todas as páginas da web na Internet (BigTable, 2006)
- A Amazon precisa lidar com o pico da demanda de compras (Dynamo, 2007)
- Os bancos de dados relacionais tradicionais estão enfrentando dificuldades para lidar com dados na escala de petabytes
(2) As quatro principais famílias de NoSQL
Análise dos pontos-chave:
- Os armazenamentos chave-valor são os mais simples — consistem apenas em chaves e valores e não suportam consultas complexas, mas oferecem o melhor desempenho.
- O banco de dados de documentos é o mais versátil — ele suporta aninhamento, matrizes e índices secundários, o que o torna adequado para a maioria das aplicações web.
- Os bancos de dados orientados a colunas se destacam na ingestão de dados — os dados são armazenados por família de colunas, o que os torna adequados para séries temporais e dados de log
- Os bancos de dados de grafos se destacam na representação de relações — eles armazenam nós e arestas de forma nativa, o que os torna ideais para redes sociais e sistemas de recomendação.
| Tipo | Representante | Modelo de dados | Cenários típicos | Consistência |
|---|---|---|---|---|
| Chave-Valor | Redis | chave → valor | Armazenamento em cache, sessões, contadores | Consistência eventual |
| Documentos | MongoDB | Documentos JSON/BSON | CMS, comércio eletrônico, registros de IoT | Configurável |
| Família de colunas | Cassandra | Família de colunas BigTable | Dados de séries temporais, com grande volume de gravações | Consistência eventual |
| Figura | Neo4j | Nós + Arestas | Redes sociais, sistemas de recomendação | Consistência forte |
graph LR
A[NoSQL Database] --> B[Key-Value Store<br/>Redis/DynamoDB]
A --> C[Document Database<br/>MongoDB/CouchDB]
A --> D[Columnar Database<br/>Cassandra/HBase]
A --> E[Graph Database<br/>Neo4j/ArangoDB]
style A fill:#cce5ff
style C fill:#d4edda
| Tipo | Exemplo | Modelo de dados | Cenários típicos |
|---|---|---|---|
| Chave-Valor | Redis | chave → valor | Armazenamento em cache, sessões, contadores |
| Documentos | MongoDB | Documentos JSON/BSON | CMS, comércio eletrônico, registros de IoT |
| Família de colunas | Cassandra | Família de colunas BigTable | Dados de séries temporais, com grande volume de gravações |
| Figura | Neo4j | Nós + Arestas | Redes sociais, sistemas de recomendação |
(3) Por que o MongoDB é o mais popular?
Visão geral do conceito: O MongoDB detém a maior participação de mercado entre as quatro principais famílias de bancos de dados NoSQL (ocupando o primeiro lugar no ranking NoSQL da DB-Engines) por oferecer o melhor equilíbrio entre flexibilidade e funcionalidade. Em comparação com os armazenamentos de chave-valor, o MongoDB oferece suporte a índices secundários e pipelines de agregação; em comparação com bancos de dados orientados a colunas, o MongoDB oferece suporte a documentos aninhados e esquemas flexíveis; e, em comparação com bancos de dados de grafos, o MongoDB apresenta uma curva de aprendizado mais suave.
| Principais vantagens do MongoDB | Descrição | Comparação com outros bancos de dados NoSQL |
|---|---|---|
| Modelo de dados semelhante ao JSON | Não há curva de aprendizado para desenvolvedores front-end | O Redis exige o aprendizado do comando key |
| Aninhamento de documentos | Um único registro corresponde a uma árvore de objetos completa | O Cassandra exige junções entre várias tabelas |
| Índices secundários | Flexíveis, mantendo o desempenho das consultas | O Redis não possui índices |
| Pipeline de agregação | Processamento de dados mais potente do que o SQL | O Cassandra possui recursos limitados de consulta |
| Driver oficial do Node.js + mongoose | O ecossistema JS mais abrangente | O melhor entre todos os bancos de dados NoSQL |
| Atlas Cloud Services | Crie clusters globais com um único clique | Custos elevados com hospedagem própria e operações |
4. História e evolução das versões do MongoDB
Visão geral do conceito: O MongoDB foi criado pela 10gen (atualmente MongoDB Inc.) em 2007 e lançado como código aberto em 2009. Desde seu uso inicial como um simples armazenamento de documentos, passando pelo suporte a transações com múltiplos documentos na versão 4.0, até o suporte à pesquisa vetorial na versão 7.0, o MongoDB evoluiu de um “banco de dados NoSQL incapaz de lidar com transações complexas” para um banco de dados de uso geral que “oferece tanto modelagem flexível quanto conformidade com o modelo ACID”.
Linha do tempo evolutiva: O desenvolvimento do MongoDB pode ser dividido em três fases: a fase de recursos básicos (1.x–3.x: CRUD básico + conjuntos de réplicas + particionamento), a fase de recursos empresariais (4.x–5.x: transações com múltiplos documentos + coleções de séries temporais + pesquisa Atlas) e a fase de evolução inteligente (6.x–8.x: pesquisa vetorial + dados criptografados na consulta + sem servidor).
| Data | Evento | Importância |
|---|---|---|
| 2007 | Dwight Merriman, Eliot Horowitz e Kevin Ryan fundaram a 10gen | Lançamento do projeto |
| 2009 | Lançamento do MongoDB 1.0 (baseado em C++) | Primeiro lançamento de código aberto |
| 2013 | A 10gen passa a se chamar MongoDB Inc. | Destaque da marca |
| 2014 | Lançamento do Atlas Cloud Service | Transformação nativa da nuvem |
| 2018 | Lançamento da versão 4.0, com suporte a transações com múltiplos documentos (ACID) | Resolução máxima de disputas |
| 2020 | Lançamento da versão 5.0: apresentação dos conjuntos de séries temporais e das APIs com controle de versão | Otimizações para cenários de IoT |
| Lançado em julho de 2023 | Suporte nativo para pesquisa vetorial | A era da IA/LLM |
| 2026 | Versão 8.0 (Atual candidata a LTS) | Versão estável mais recente |
(1) 4.1 Origens
(2) 4.2 Principais recursos do MongoDB 7.x
graph TB
A[MongoDB 7.0 Key Features] --> B[Document Model<br/>BSON + Nesting]
A --> C[Aggregation Pipeline<br/>$facet/$bucket/$lookup]
A --> D[Transactions<br/>Multiple Documents ACID]
A --> E[Change Streams<br/>Real-Time Change Monitoring]
A --> F[Atlas Search<br/>Full Text + Vector Search]
A --> G[Time Series<br/>IoT Scene Optimization]
style A fill:#cce5ff
(3) 4.3 Métodos de implantação
Visão geral do conceito: O MongoDB oferece quatro opções de implantação — o serviço em nuvem Atlas (sem sobrecarga operacional), a implantação em um único nó (para desenvolvimento e aprendizado), conjuntos de réplicas (para alta disponibilidade em produção) e clusters fragmentados (para escalonamento horizontal de grandes conjuntos de dados). As principais considerações na hora de escolher uma opção de implantação são: volume de dados, simultaneidade, requisitos de disponibilidade e capacidades operacionais.
| Método de implantação | Casos de uso | Vantagens | Volume de dados |
|---|---|---|---|
| Serviços em nuvem da Atlas | Pessoas físicas / Pequenas e médias empresas / Corporações multinacionais | Não requer manutenção, implantação global, backups automáticos | Escalabilidade elástica |
| Versão autônoma hospedada localmente | Desenvolvimento e aprendizado locais | Controle total, custo zero | < 1 TB |
| Conjunto de réplicas auto-hospedado | Ambiente de produção | Alta disponibilidade, failover automático | < 8 TB por fragmento |
| Cluster fragmentado desenvolvido internamente | Grandes volumes de dados, alta taxa de transferência | Escalonamento horizontal, armazenamento na escala de petabytes | Escala de petabytes |
| Implantação do Docker | CI/CD, Testes locais | Início rápido, Reprodutível | Nível de desenvolvimento |
▶ Exemplo: Três maneiras de se conectar ao MongoDB
# 1. mongosh Connect Atlas Cloud Services
mongosh "mongodb+srv://cluster0.mongodb.net/mydb" --username alice
# 2. mongosh Connect to a self-hosted local replica set
mongosh "mongodb://localhost:27017/mydb"
# 3. mongosh Connect Docker Container
mongosh "mongodb://192.168.1.100:27017/mydb"
5. Modelo de documento x Modelo relacional
Explicação do conceito: O modelo de documento e o modelo relacional são dois paradigmas de modelagem de dados fundamentalmente diferentes. O modelo relacional divide os dados em várias tabelas, que são unidas em tempo de execução por meio de operações JOIN; o modelo de documento incorpora os dados relacionados em um único documento e os retorna em uma única consulta. Cada modelo tem suas próprias vantagens e desvantagens — o modelo de documento é adequado para cenários com dados coesos e mudanças frequentes no esquema, enquanto o modelo relacional é adequado para cenários com relações complexas entre os dados e forte consistência transacional.
Como funciona: O modelo relacional segue um projeto normalizado — cada dado é armazenado apenas uma vez e vinculado por meio de referências de chave estrangeira. O modelo de documento segue um projeto desnormalizado — os dados que são frequentemente acessados em conjunto são incorporados no mesmo documento, trocando redundância por desempenho nas consultas. O MongoDB suporta aninhamento de documentos em até 100 níveis de profundidade, com um tamanho máximo de documento de 16 MB, o que é suficiente para atender às necessidades de modelagem de dados da maioria das aplicações web.
(1) Principais diferenças
graph TB
subgraph Relational Model
T1[users Table<br/>id, name, email] --> J1[JOIN]
T2[orders Table<br/>id, user_id, total] --> J1
T3[order_items Table<br/>id, order_id, product_id] --> J1
J1 --> R[Search Results<br/>Must be merged at runtime]
end
subgraph Document Model
D1[orders Gathering<br/>A document = One order<br/>Includes user + items] --> R2[Search Results<br/>One query returns]
end
style J1 fill:#f8d7da
style R2 fill:#d4edda
(2) Comparação entre a terminologia relacional e a do MongoDB
| Termos relacionais | Termos do MongoDB | Descrição |
|---|---|---|
| Banco de dados | Banco de dados | Banco de dados |
| Tabela | Coleção | Tabela / Coleção |
| Linha | Documento | Linha / Documento |
| Coluna | Campo | Coluna / Campo |
| Chave primária | _id | Chave primária (ObjectId gerado automaticamente) |
| Chave estrangeira | Referência / Incorporação | Chave estrangeira / Documento incorporado |
| JUNÇÃO | $lookup / embed | Junção de tabelas / Aninhamento de documentos |
| Índice | Índice | Índice |
| Transação | Transação (4.0+) | Transação |
(3) Quando usar o MongoDB e quando usar o SQL?
Explicação do conceito: O MongoDB e o SQL não são mutuamente exclusivos — muitos sistemas de produção utilizam ambos (persistência poliglota). O MongoDB é adequado para cenários com mudanças frequentes no esquema e alta taxa de gravação, enquanto o SQL é adequado para cenários que exigem forte consistência transacional e relações complexas. O importante é identificar em qual categoria se enquadra o seu cenário de negócios.
| Cenário | Recomendação | Motivo |
|---|---|---|
| Alterações frequentes no esquema (CMS, catálogo de produtos) | ✅ MongoDB | Os documentos suportam, por natureza, dados heterogêneos |
| Alta taxa de transferência de gravação (logs, IoT) | ✅ MongoDB | Atomicidade no nível do documento, sem bloqueios de transação |
| Juntas complexas entre várias tabelas (ERP, setor bancário) | ⚠️ Use com cautela | A função $lookup ainda não está tão madura quanto o JOIN |
| Forte consistência transacional (finanças, estoque) | ⚠️ MongoDB 4.0+ | Compatível, mas com perda de desempenho |
| OLAP para grandes volumes de dados (Data Warehouse) | ❌ Use com cautela | ClickHouse / BigQuery são opções melhores |
| Esquema fixo (Pedidos, Usuários) | ✅ Também é aceitável usar SQL | Depende das preferências da equipe |
Abordagem híbrida: Use o MySQL para os dados essenciais do negócio (usuários, pedidos, pagamentos) a fim de garantir a consistência transacional; use o MongoDB para a modelagem flexível de registros de comportamento, catálogos de produtos e dados de conteúdo. Sincronize os dados por meio de filas de mensagens ou pipelines de ETL.
6. Serviço em nuvem MongoDB Atlas
Visão geral do conceito: O MongoDB Atlas é um serviço oficial de banco de dados em nuvem totalmente gerenciado, disponível nas três principais plataformas de nuvem: AWS, Azure e Google Cloud. O principal valor do Atlas reside em sua abordagem de “manutenção zero” — ele implanta automaticamente conjuntos de réplicas, realiza backups, gerencia o failover, monitora e emite alertas, além de aplicar patches de segurança. Para equipes sem um DBA dedicado, o Atlas pode reduzir o tempo operacional em 80%.
(1) O que é o Atlas?
O MongoDB Atlas é um serviço de banco de dados em nuvem totalmente gerenciado oferecido pela MongoDB, disponível nas três principais plataformas de nuvem: AWS, Azure e Google Cloud.
graph LR
A[Your App] --> B[Atlas Global Clusters]
B --> C[Multi-Region Replicas<br/>Automatic Failover]
B --> D[Automatic Backup<br/>PITR Point-in-Time Recovery]
B --> E[Monitoring Alerts<br/>Performance Optimization Recommendations]
B --> F[Security and Compliance<br/>SCRAM + TLS]
style B fill:#d4edda
(2) Plano gratuito do Atlas
| Recursos | Quota gratuita |
|---|---|
| Armazenamento | 512 MB |
| RAM | Compartilhada |
| Região | Qualquer |
| Backup | Nenhum |
| Duração | Grátis para sempre |
▶ Exemplo 1: Criar um cluster do Atlas em 5 minutos
1. Visit https://www.mongodb.com/cloud/atlas/register Register
2. Select "Build a Cluster" → "Shared" → "Free"
3. Selecting a Cloud Provider(AWS)and regions(We recommend choosing a location close to the target market.)
4. Cluster Name:Cluster0
5. Click "Create Cluster",Waiting 1-3 minutes
6. In "Database Access" Add a User(Username + Password)
7. In "Network Access" Add IP Whitelist(0.0.0.0/0 Allow all IP)
8. Click "Connect" → "Connect your application" → Get the connection string
(3) Três níveis de agrupamento
| Nível | Aplicável | Preço |
|---|---|---|
| M0 Sandbox | Aprendizado, Prototipagem | Gratuito |
| M10 / M20 | Produção em pequena escala | A partir de ~$60/mês |
| M30 / M40 | Produção em média escala | A partir de ~US$ 300/mês |
| M80+ | Produção em grande escala | $2.000+/mês |
| Atlas Serverless | Carga intermitente | Pagamento conforme o uso |
7. Uma visão geral do ecossistema do MongoDB
(1) Componentes principais
graph TB
subgraph "MongoDB Ecology"
A[MongoDB Server<br/>Core Database Engine]
B[mongosh<br/>Command-Line Client]
C[MongoDB Compass<br/>GUI Visualization Tools]
D[MongoDB Atlas<br/>Cloud Hosting Services]
E[BI Connector<br/>Tableau / Power BI Integration]
F[Kafka Connector<br/>Real-Time Data Pipeline]
G[mongodump / mongorestore<br/>Backup and Recovery Tool]
end
A --> B
A --> C
A --> D
A --> E
A --> F
A --> G
style A fill:#cce5ff
style D fill:#d4edda
(2) Orientado por linguagem de programação
| Idioma | Drivers oficiais | ODMs/ORMs populares |
|---|---|---|
| JavaScript / Node.js | mongodb |
mongoose (27 mil⭐) |
| Python | pymongo |
MongoEngine, Flask-MongoEngine |
| Java | mongodb-driver-sync |
Spring Data MongoDB |
| Ir | mongo-go-driver |
mgo, Qor |
| PHP | mongodb |
Doctrine MongoDB |
| C# | MongoDB.Driver |
MongoDB.Entities |
| Ruby | mongo |
Mongoid |
(3) Padrão de fato no ecossistema do Node.js: Mongoose
Visão geral do conceito: O Mongoose é o ODM (Modelagem de Objetos e Documentos) do MongoDB mais popular no ecossistema Node.js, com mais de 27 mil estrelas no GitHub. Baseado no driver nativo mongodb, o Mongoose oferece recursos avançados, como definição de esquema, validação de dados, middleware e consultas de junção populate, tornando as operações do MongoDB mais seguras e fáceis de usar. A desvantagem é uma ligeira perda de desempenho (que pode ser desativada por meio de lean()).
| Dimensão | Driver nativo do MongoDB | Mongoose ODM |
|---|---|---|
| Definição do esquema | ❌ Nenhuma | ✅ Tipo + Validação |
| Validação de dados | Manual | Automática |
| Middleware | ❌ Nenhum | ✅ Hooks pré e pós |
| Consulta combinada | $lookup manual | ✅ populate() |
| Desempenho | Ideal | Ligeiramente inferior (pode ser compensado usando lean()) |
| Curva de aprendizado | Baixa | Média |
// mongoose 7.x — Node.js Eco-Friendly Is All the Rage ODM(27k⭐)
const mongoose = require('mongoose');
// 1. Connect to the Database
mongoose.connect('mongodb://localhost:27017/shophub');
// 2. Definition Schema(Data Model)
const productSchema = new mongoose.Schema({
sku: { type: String, required: true, unique: true },
title: { type: String, required: true },
price: { type: Number, required: true, min: 0 },
category: { type: String, enum: ['Electronics', 'Clothing', 'Books'] },
attributes: { type: Object, default: {} },
tags: [String],
stock: { type: Number, default: 0 }
}, { timestamps: true });
// 3. Create Model
const Product = mongoose.model('Product', productSchema);
// 4. CRUD Operation
const phone = await Product.create({
sku: 'PHONE-X-256-BLK',
title: 'Smartphone X 256GB Black',
price: 599.99,
category: 'Electronics',
attributes: { color: 'Black', storage: '256GB' },
tags: ['5g', 'amoled'],
stock: 80
});
▶ Exemplo 2: Instalação do conjunto completo de ferramentas do MongoDB
# 1. Installation mongosh(Command-Line Client)
brew install mongosh # macOS
sudo apt install mongosh # Ubuntu
# 2. Installation MongoDB Compass(GUI Tools)
# Download from https://www.mongodb.com/try/download/compass
# 3. Installation Node.js Driver
npm install mongodb --save
# 4. Installation mongoose(Recommendations)
npm install mongoose --save
# 5. Verify the Installation
mongosh --version
node -e "console.log(require('mongoose').version)"
8. O MongoDB e seus três principais mercados-alvo
(1) Mercado do Oriente Médio (árabe)
Casos de uso:
- Prioridade para dispositivos móveis, notificações push de PWA
- Plataformas de comércio eletrônico (Noon, Namshi, Amazon Oriente Médio)
- Aplicativos de redes sociais (histórico de conversas, feed de notícias)
Vantagens do MongoDB:
- O modelo do documento é adequado para comentários complexos e aninhados em árabe
- Alta taxa de transferência de gravação para lidar com os principais eventos de vendas do comércio eletrônico no Oriente Médio (Ramadã, White Friday)
- Centro de Dados da Arábia Saudita (Atlas me-central-1)
(2) Mercado brasileiro (português)
Casos de uso:
- Comércio eletrônico (Mercado Livre, Americanas)
- Fintech (Nubank, PicPay)
- Rastreamento de encomendas (Correios)
Vantagens do MongoDB:
- Um esquema flexível que se adapta às frequentes mudanças na legislação tributária brasileira
- Processamento de trajetórias de pedidos utilizando conjuntos de séries temporais
- Data Center de São Paulo, Brasil (Atlas sa-east-1)
(3) Mercado japonês (japonês)
Casos de uso:
- Servidores de jogos (dados do usuário, itens do jogo)
- Comércio eletrônico (Rakuten, Yahoo! Shopping)
- Plataformas de conteúdo (observação: Hatena)
Vantagens do MongoDB:
- O escalonamento horizontal suporta milhões de usuários simultâneos (pico de tráfego durante o lançamento do jogo)
- Classificação em tempo real do Change Streams
- Centro de Dados de Tóquio, Japão (Atlas ap-northeast-1)
9. Percursos de aprendizagem sugeridos
(1) Roteiro deste tutorial
graph LR
A[Phase 1<br/>MongoDB Getting Started<br/>6 Lessons] --> B[Phase 2<br/>CRUD + mongoose<br/>7 Lessons]
B --> C[Phase 3<br/>Aggregation + Index<br/>7 Lessons]
C --> D[Phase 4<br/>Transactions + Replica Sets + Sharding<br/>5 Lessons]
D --> E[Phase 5<br/>Node.js Practical Application + Comprehensive Projects<br/>5 Lessons]
style A fill:#d4edda
style E fill:#cce5ff
(2) Conhecimentos prévios
| Imprescindível | Recomendado |
|---|---|
| ✅ Noções básicas de JavaScript (ES6+) | TypeScript |
| ✅ Noções básicas do Node.js | Framework Express |
| ✅ Operações na linha de comando | Docker |
| ✅ API HTTP / REST | Formato de dados JSON |
(3) Tempo estimado de estudo
- Curso completo + prática: 40–50 horas
- Introdução (Fases 1–2): 8 a 10 horas
- Avançado (Fases 3–4): 14–18 horas
- Projeto Abrangente (Fase 5): 12–15 horas
❓ Perguntas Frequentes
P: O MongoDB é gratuito? R: A MongoDB Community Edition (instalada localmente) é totalmente gratuita e de código aberto (sob a licença SSPL). O MongoDB Atlas oferece um cluster de 512 MB que é gratuito para sempre. A versão comercial (Enterprise Advanced) é cobrada com base no tamanho do cluster.
P: O que devo escolher, MongoDB ou MySQL? R: Depende do cenário de negócios. Esquema fixo + transações robustas (por exemplo, pedidos, ERP) → MySQL; alterações frequentes no esquema + altos volumes de gravação (por exemplo, CMS, catálogos de produtos, logs) → MongoDB. Você também pode usar uma abordagem híbrida (MySQL para dados essenciais do negócio + MongoDB para logs de comportamento do usuário).
P: Preciso saber SQL para aprender MongoDB? R: Não. Este tutorial aborda os conceitos de bancos de dados de documentos desde o início. No entanto, se você tiver um conhecimento básico de SQL, conseguirá compreender mais rapidamente conceitos do MongoDB, como o $lookup (semelhante ao JOIN) e o $group (semelhante ao GROUP BY) no pipeline de agregação.
P: Qual é a relação entre um “documento” do MongoDB e o JSON? R: Os documentos do MongoDB são armazenados no formato BSON (Binary JSON), que suporta mais tipos de dados do que o JSON (como Date, ObjectId e Decimal128). No entanto, a sintaxe é quase idêntica à do JSON, portanto não há dificuldade de adaptação para desenvolvedores front-end.
P: Qual é o tamanho máximo de um conjunto de dados que o MongoDB pode armazenar? R: O tamanho máximo de um único documento no MongoDB é de 16 MB (filosofia de projeto: evitar o armazenamento de documentos muito grandes). Uma única coleção pode armazenar petabytes de dados (por meio do particionamento). No Atlas, o maior cluster suporta 4.096 fragmentos, sendo que cada um deles é capaz de armazenar 32 TB.
P: O que é o Mongoose? Por que usá-lo? R: O Mongoose é o ODM do MongoDB mais popular no ecossistema Node.js (27 mil ⭐). Ele oferece recursos avançados, como definição de esquema, validação de dados, middleware e consultas de junção
populate. É mais fácil de usar do que o driver nativomongodb, mas apresenta uma ligeira perda de desempenho (que pode ser desativada em produção).
📖 Resumo
- Os bancos de dados NoSQL surgiram em resposta à explosão de dados na Internet, e o MongoDB é um dos principais exemplos de banco de dados de documentos.
- O MongoDB foi criado pela 10gen (atualmente MongoDB Inc.) em 2007 e lançado como código aberto em 2009
- O modelo de documento é adequado para cenários com mudanças frequentes no esquema e alta taxa de transferência de gravação, enquanto o modelo relacional é adequado para cenários que exigem transações robustas.
- O BSON é o formato de armazenamento do MongoDB, que suporta mais tipos de dados do que o JSON (como Date e ObjectId).
- O MongoDB Atlas é um serviço oficial hospedado na nuvem que oferece um plano gratuito de 512 MB
- O Mongoose é o ODM do MongoDB mais popular no ecossistema do Node.js (27 mil ⭐)
- Este tutorial está dividido em 5 fases e é composto por 30 aulas; estima-se que a conclusão do curso leve de 40 a 50 horas.
📝 Exercícios
-
Exercício básico (⭐): Acesse mongodb.com/cloud/atlas para criar uma conta, crie um cluster M0 gratuito e conecte-se com sucesso usando
mongosh. -
Exercício básico (⭐): Execute o comando
db.runCommand({ ping: 1 })no cluster Atlas, faça uma captura de tela da saída e revise os conceitos básicos da validação de conexão do MongoDB. -
Exercício avançado (⭐⭐): Use o mongosh para executar os seguintes comandos:
use shopdb,db.products.insertOne({ sku: "TEST-001", title: "Test Product", price: 9.99 })edb.products.find().pretty()para entender a criação implícita de bancos de dados e coleções no MongoDB. -
Pergunta avançada (⭐⭐): Leia a seção “O que é NoSQL?” da documentação oficial do MongoDB (pesquise a palavra-chave) e cite um caso de uso real para cada uma das quatro principais famílias de NoSQL (chave-valor, documento, orientada a colunas e grafo).
-
Desafio (⭐⭐⭐): Compare os dois ORMs do Node.js — MongoDB (Mongoose) e MySQL (Sequelize) — e implemente um código para “criar uma tabela/coleção de usuários (com 5 campos)” para cada um, observando as diferenças no estilo da API entre os dois ORMs.