Guia Completo do MongoDB: Instalação, Recursos e Melhores Práticas em um VPS
MongoDB é um dos bancos de dados NoSQL mais poderosos e amplamente adotados do mundo — e com razão. Sua arquitetura flexível e orientada a documentos a torna a escolha preferida para desenvolvedores que criam aplicações modernas e intensivas em dados que precisam escalar rapidamente. Quer você esteja executando um MVP de startup ou gerenciando infraestrutura de nível empresarial, MongoDB combinado com um ambiente de hospedagem de alto desempenho oferece a velocidade, flexibilidade e confiabilidade que suas aplicações exigem.
Neste guia abrangente, você aprenderá o que é MongoDB, por que se destaca dos bancos de dados relacionais tradicionais, como instalá-lo no Ubuntu e como realizar operações essenciais usando o shell MongoDB.
O que é MongoDB e por que você deve usá-lo?
MongoDB é um banco de dados NoSQL de código aberto, orientado a documentos, que armazena dados em documentos flexíveis semelhantes a JSON chamados BSON (Binary JSON). Ao contrário dos bancos de dados relacionais tradicionais que dependem de estruturas rígidas de tabela-linha-coluna, MongoDB permite que cada documento em uma coleção tenha sua própria estrutura única. Isso o torna excepcionalmente adequado para aplicações com modelos de dados em evolução ou imprevisíveis.
Principais vantagens do MongoDB sobre bancos de dados SQL tradicionais
| Recurso | MongoDB (NoSQL) | SQL Tradicional |
|---|---|---|
| Modelo de dados | Documentos flexíveis (BSON) | Schema fixo (tabelas/linhas) |
| Escalabilidade | Horizontal (sharding) | Principalmente vertical |
| Alterações de schema | Sem schema, dinâmico | Requer migrações |
| Linguagem de consulta | MQL rico + agregação | SQL |
| Melhor para | Dados dinâmicos, não estruturados | Dados estruturados, relacionais |
| Desempenho em escala | Excelente com sharding | Pode degradar sem ajuste |
MongoDB é ideal para uma ampla gama de casos de uso, incluindo análise em tempo real, sistemas de gerenciamento de conteúdo, plataformas de e-commerce, ingestão de dados IoT, backends móveis e qualquer aplicação onde as estruturas de dados provavelmente mudarão ao longo do tempo.
Por que hospedar MongoDB em um VPS?
Hospedar MongoDB em um servidor privado virtual dedicado oferece um nível de controle, desempenho e segurança que ambientes compartilhados simplesmente não podem fornecer. Com um plano de VPS Hosting da AlexHost, você obtém:
- Acesso root completo para configurar MongoDB exatamente como sua aplicação exige
- Recursos dedicados de RAM e CPU para lidar com cargas de trabalho de leitura/escrita exigentes
- Ambiente isolado que elimina o problema do “vizinho barulhento” comum em hospedagem compartilhada
- Escalabilidade vertical e horizontal contínua conforme seus dados crescem
- Regras de firewall e rede personalizadas para bloquear o acesso ao banco de dados
Para aplicações com requisitos de throughput excepcionalmente altos, os Servidores Dedicados da AlexHost oferecem desempenho bare-metal com isolamento completo de hardware — o padrão ouro para implantações MongoDB em produção.
Seção 1: Compreendendo a arquitetura central do MongoDB
Antes de mergulhar na instalação, é importante entender como MongoDB organiza e gerencia dados.
Documentos
A unidade fundamental de dados em MongoDB é um documento — um objeto semelhante a JSON que pode conter campos aninhados, arrays e tipos de dados mistos. Por exemplo:
{
"_id": ObjectId("64b1f2c3e4b0a1d2e3f4a5b6"),
"name": "Alice",
"age": 30,
"email": "alice@example.com",
"address": {
"city": "New York",
"zip": "10001"
},
"tags": ["developer", "mongodb", "nodejs"]
}Coleções
Os documentos são agrupados em coleções, que são análogas a tabelas em bancos de dados SQL. No entanto, ao contrário das tabelas SQL, as coleções não impõem um schema fixo — documentos dentro da mesma coleção podem ter campos completamente diferentes.
Bancos de dados
Um servidor MongoDB pode hospedar múltiplos bancos de dados, cada um contendo seu próprio conjunto de coleções. Isso facilita o isolamento de dados para diferentes aplicações ou ambientes (por exemplo, desenvolvimento, staging, produção) em uma única instância de servidor.
Seção 2: Principais recursos do MongoDB
2.1 Armazenamento orientado a documentos
O modelo de documento do MongoDB é um de seus recursos mais poderosos. Como cada documento pode ter uma estrutura diferente, os desenvolvedores podem evoluir o schema do banco de dados organicamente conforme os requisitos da aplicação mudam — sem executar migrações complexas de ALTER TABLE ou experimentar tempo de inatividade.
Essa flexibilidade é particularmente valiosa em ambientes de desenvolvimento ágil onde os requisitos mudam frequentemente, ou em aplicações que agregam dados de múltiplas fontes heterogêneas.
2.2 Escalabilidade horizontal com sharding
Uma das capacidades definidoras do MongoDB é seu suporte nativo para escalabilidade horizontal através de sharding. Sharding distribui dados em múltiplos servidores (chamados shards), permitindo que MongoDB lide com conjuntos de dados e níveis de throughput que sobrecarregariam uma única máquina.
Cada shard contém um subconjunto dos dados totais, e um roteador mongos direciona consultas para o(s) shard(s) apropriado(s) com base em uma chave de shard configurável. Essa arquitetura permite escalabilidade quase linear conforme seu volume de dados e carga de consulta crescem.
Para ambientes de produção de alto tráfego, hospedar MongoDB nos Servidores Dedicados da AlexHost garante que cada shard tenha acesso a recursos de hardware isolados e de alto desempenho.
2.3 Alta disponibilidade com conjuntos de réplicas
MongoDB fornece tolerância a falhas integrada através de conjuntos de réplicas — grupos de instâncias MongoDB que mantêm cópias idênticas dos mesmos dados. Um conjunto de réplicas consiste em:
- Um nó primário que recebe todas as operações de escrita
- Um ou mais nós secundários que replicam dados do primário
- Um árbitro opcional que participa de eleições sem armazenar dados
Se o nó primário falhar, o conjunto de réplicas elege automaticamente um novo primário entre os secundários disponíveis, minimizando o tempo de inatividade e garantindo durabilidade dos dados.
2.4 Linguagem de consulta poderosa e framework de agregação
A Linguagem de Consulta MongoDB (MQL) do MongoDB suporta um rico conjunto de operações, incluindo:
- Filtragem em nível de campo com operadores de comparação, lógicos e de elemento
- Projeção para retornar apenas campos específicos
- Classificação e paginação com
sort(),limit()eskip() - Busca de texto com índices de texto completo
- Consultas geoespaciais para aplicações baseadas em localização
O Framework de Agregação fornece uma abordagem baseada em pipeline para transformação e análise de dados, suportando operações como $match, $group, $sort, $project, $lookup (junções), $unwind e muitas mais — oferecendo funcionalidade comparável a operações complexas de GROUP BY e JOIN do SQL.
2.5 Indexação flexível
MongoDB suporta múltiplos tipos de índices para otimizar o desempenho de consultas:
- Índices de campo único para consultas simples
- Índices compostos para consultas de múltiplos campos
- Índices multikey para campos de array
- Índices de texto para busca de texto completo
- Índices geoespaciais para consultas de localização
- Índices TTL para expiração automática de documentos (útil para dados de sessão ou logs)
Seção 3: Instalando MongoDB no Ubuntu (passo a passo)
Esta seção o guia através de uma instalação completa do MongoDB no Ubuntu 20.04 LTS (Focal Fossa). Essas etapas são otimizadas para um ambiente VPS da AlexHost com acesso root ou sudo.
Pré-requisitos
- Servidor Ubuntu 20.04 LTS
- Uma conta de usuário com privilégios
sudo - Familiaridade básica com a linha de comando Linux
Se você ainda não tem um servidor, pode criar um VPS Ubuntu totalmente configurado em minutos com AlexHost VPS Hosting.
Passo 1: Importar a chave pública GPG do MongoDB
Os pacotes MongoDB são assinados com uma chave GPG para verificar sua autenticidade. Importe a chave com o seguinte comando:
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -Você deve ver OK como saída, confirmando que a chave foi importada com sucesso.
Passo 2: Adicionar o repositório MongoDB
Crie um arquivo de lista para adicionar o repositório oficial do MongoDB às fontes de pacotes do seu sistema:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list> Nota: Este comando adiciona o repositório MongoDB 6.0. Ajuste o número da versão se você precisar de uma versão diferente.
Passo 3: Atualizar o banco de dados de pacotes
Atualize seu índice de pacotes local para incluir o repositório MongoDB recém-adicionado:
sudo apt updatePasso 4: Instalar MongoDB
Instale a versão estável mais recente do MongoDB com todos os componentes necessários:
sudo apt install -y mongodb-orgIsso instala os seguintes pacotes:
mongod— o daemon do banco de dados MongoDBmongos— o roteador de sharding MongoDBmongosh— o shell MongoDB (substituto moderno do shell legadomongo)- Ferramentas e bibliotecas MongoDB
Passo 5: Iniciar e ativar o serviço MongoDB
Inicie o serviço MongoDB imediatamente:
sudo systemctl start mongodAtive MongoDB para iniciar automaticamente na inicialização do sistema:
sudo systemctl enable mongodVerifique se MongoDB está funcionando corretamente:
sudo systemctl status mongodVocê deve ver uma saída indicando que o serviço está active (running). Se MongoDB iniciou com sucesso, você também verá uma linha confirmando que está escutando na porta 27017.
Passo 6: Proteger sua instalação MongoDB (recomendado)
Antes de usar MongoDB em qualquer ambiente de produção ou voltado para a internet, é crítico ativar a autenticação. Por padrão, MongoDB não requer nome de usuário ou senha.
Criar um usuário administrativo:
mongoshDentro do shell MongoDB:
use admin
db.createUser({
user: "adminUser",
pwd: "YourStrongPasswordHere",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
})Ativar autenticação editando o arquivo de configuração MongoDB:
sudo nano /etc/mongod.confEncontre a seção security e adicione:
security:
authorization: enabledReinicie MongoDB para aplicar as alterações:
sudo systemctl restart mongodA partir deste ponto, todas as conexões com MongoDB exigirão credenciais válidas.
Seção 4: Usando MongoDB — Comandos e operações essenciais
Com MongoDB instalado e protegido, vamos explorar as operações mais importantes que você usará diariamente.
Passo 1: Acessar o shell MongoDB
Conecte-se à sua instância MongoDB usando o shell moderno mongosh:
mongoshSe a autenticação estiver ativada, conecte-se com credenciais:
mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase adminPasso 2: Operações de banco de dados
Listar todos os bancos de dados:
show dbsCriar ou alternar para um banco de dados:
use mydatabase> MongoDB cria o banco de dados automaticamente quando você insere dados nele pela primeira vez.
Verificar o banco de dados selecionado atualmente:
dbDescartar um banco de dados:
db.dropDatabase()Passo 3: Operações de coleção
Criar uma coleção explicitamente:
db.createCollection("users")Listar todas as coleções no banco de dados atual:
show collectionsDescartar uma coleção:
db.users.drop()Passo 4: Operações CRUD de documento
Inserir documentos
Inserir um único documento:
db.users.insertOne({
name: "Alice",
age: 30,
email: "alice@example.com",
role: "developer"
})Inserir múltiplos documentos de uma vez:
db.users.insertMany([
{ name: "Bob", age: 25, email: "bob@example.com", role: "designer" },
{ name: "Carol", age: 35, email: "carol@example.com", role: "manager" },
{ name: "Dave", age: 28, email: "dave@example.com", role: "developer" }
])Ler documentos
Encontrar todos os documentos em uma coleção:
db.users.find()Encontrar documentos com uma condição específica:
db.users.find({ role: "developer" })Encontrar documentos com múltiplas condições:
db.users.find({ role: "developer", age: { $gte: 28 } })Retornar apenas campos específicos (projeção):
db.users.find({ role: "developer" }, { name: 1, email: 1, _id: 0 })Encontrar um único documento:
db.users.findOne({ name: "Alice" })Classificar resultados:
db.users.find().sort({ age: 1 }) // Ascending
db.users.find().sort({ age: -1 }) // DescendingLimitar e paginar resultados:
db.users.find().limit(10).skip(20) // Page 3 with 10 results per pageAtualizar documentos
Atualizar um único documento:
db.users.updateOne(
{ name: "Alice" },
{ $set: { age: 31, role: "senior developer" } }
)Atualizar múltiplos documentos:
db.users.updateMany(
{ role: "developer" },
{ $set: { department: "Engineering" } }
)Incrementar um campo numérico:
db.users.updateOne(
{ name: "Bob" },
{ $inc: { age: 1 } }
)Excluir documentos
Excluir um único documento:
db.users.deleteOne({ name: "Dave" })Excluir múltiplos documentos que correspondem a uma condição:
db.users.deleteMany({ role: "designer" })Passo 5: Indexação para desempenho
Criar índices em campos consultados frequentemente melhora dramaticamente o desempenho de consultas.
Criar um índice de campo único:
db.users.createIndex({ email: 1 })Criar um índice composto:
db.users.createIndex({ role: 1, age: -1 })Criar um índice único:
db.users.createIndex({ email: 1 }, { unique: true })Listar todos os índices em uma coleção:
db.users.getIndexes()Passo 6: Pipeline de agregação
O framework de agregação permite que você execute análise de dados complexa diretamente dentro do MongoDB.
Exemplo: Contar usuários por função e classificar por contagem:
db.users.aggregate([
{ $group: { _id: "$role", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])Exemplo: Filtrar, agrupar e calcular idade média por função:
db.users.aggregate([
{ $match: { department: "Engineering" } },
{ $group: { _id: "$role", avgAge: { $avg: "$age" }, total: { $sum: 1 } } },
{ $sort: { avgAge: 1 } }
])Seção 5: Configuração do MongoDB e ajuste de desempenho
Configurando mongod.conf
O arquivo de configuração principal do MongoDB está localizado em /etc/mongod.conf. Configurações principais para revisar e otimizar:
# Network settings
net:
port: 27017
bindIp: 127.0.0.1 # Restrict to localhost for security; use server IP for remote access
# Storage settings
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 2 # Set to ~50% of available RAM
# Logging
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Security
security:
authorization: enabled
# Replication (for replica sets)
replication:
replSetName: "rs0"Melhores práticas de desempenho
- Alocar RAM suficiente — O mecanismo de armazenamento WiredTiger do MongoDB usa um cache em memória. Defina
cacheSizeGBpara aproximadamente 50% da RAM do sistema disponível. - Usar índices apropriados — Analise consultas lentas com
db.collection.explain("executionStats")e crie índices de acordo. - Monitorar com MongoDB Atlas ou mongostat — Use as ferramentas de linha de comando
mongostatemongotoppara monitorar o desempenho em tempo real. - Ativar journaling — O journaling está ativado por padrão e fornece recuperação de falhas; não o desative em produção.
- Usar pooling de conexão — Configure o driver MongoDB da sua aplicação para usar pooling de conexão para reduzir a sobrecarga de conexão.
- Compactar coleções regularmente — Use
db.runCommand({ compact: "collectionName" })para recuperar espaço em disco após grandes exclusões.
Seção 6: Fazendo backup e restaurando MongoDB
Backups regulares são essenciais para qualquer banco de dados de produção. MongoDB fornece ferramentas integradas para esse fim.
Criar um backup com mongodump
mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d)Restaurar de um backup com mongorestore
mongorestore --uri="mongodb://adminUser:password@localhost:27017" /backup/mongodb/20240115/Automatizar backups com Cron
Adicione um trabalho cron para executar backups diários automaticamente:
sudo crontab -eAdicione a seguinte linha para executar um backup todos os dias às 2:00 AM:
0 2 * * * mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d) >> /var/log/mongodb-backup.log 2>&1Escolhendo o plano AlexHost certo para MongoDB
O plano certo depende da escala, tráfego e requisitos de dados da sua aplicação:
| Caso de uso | Plano recomendado | Por quê |
|---|---|---|
| Desenvolvimento / Teste | VPS Hosting | Econômico, controle total, fácil configuração |
| Produção pequena a média | VPS Hosting | Recursos escaláveis, armazenamento SSD, acesso root |
| Produção de alto tráfego | Servidores Dedicados | Desempenho bare-metal, sem compartilhamento de recursos |
| ML/IA com MongoDB | GPU Hosting | Aceleração GPU para cargas de trabalho de processamento de dados |
| Aplicação web + MongoDB | VPS com cPanel | Interface de gerenciamento fácil junto com seu banco de dados |
Para aplicações que também exigem um frontend web, notificações por email ou conexões protegidas por SSL, AlexHost oferece Certificados SSL e Email Hosting para completar sua pilha de infraestrutura.
Perguntas frequentes
P: MongoDB é gratuito para usar?
Sim. MongoDB Community Edition é gratuito e de código aberto sob a Server Side Public License (SSPL). MongoDB Enterprise e MongoDB Atlas (nuvem) oferecem recursos adicionais em base paga.
P: Qual porta MongoDB usa por padrão?
MongoDB escuta na porta 27017 por padrão. Você pode alterar isso em /etc/mongod.conf.
P: Posso executar MongoDB em um plano de hospedagem compartilhada?
MongoDB requer acesso root ou administrativo para instalar e configurar adequadamente, o que não está disponível em hospedagem compartilhada padrão. Um VPS ou servidor dedicado é necessário. A Hospedagem web compartilhada da AlexHost é mais adequada para aplicações PHP/MySQL, enquanto implantações MongoDB devem usar um VPS ou servidor dedicado.
P: Como me conectar ao MongoDB de uma aplicação remota?
Atualize bindIp em /etc/mongod.conf para incluir o endereço IP do seu servidor, configure seu firewall para permitir a
em todos os serviços de alojamento