Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Servidores Dedicados Servidores Virtuais

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

RecursoMongoDB (NoSQL)SQL Tradicional
Modelo de dadosDocumentos flexíveis (BSON)Schema fixo (tabelas/linhas)
EscalabilidadeHorizontal (sharding)Principalmente vertical
Alterações de schemaSem schema, dinâmicoRequer migrações
Linguagem de consultaMQL rico + agregaçãoSQL
Melhor paraDados dinâmicos, não estruturadosDados estruturados, relacionais
Desempenho em escalaExcelente com shardingPode 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() e skip()
  • 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 update

Passo 4: Instalar MongoDB

Instale a versão estável mais recente do MongoDB com todos os componentes necessários:

sudo apt install -y mongodb-org

Isso instala os seguintes pacotes:

  • mongod — o daemon do banco de dados MongoDB
  • mongos — o roteador de sharding MongoDB
  • mongosh — o shell MongoDB (substituto moderno do shell legado mongo)
  • Ferramentas e bibliotecas MongoDB

Passo 5: Iniciar e ativar o serviço MongoDB

Inicie o serviço MongoDB imediatamente:

sudo systemctl start mongod

Ative MongoDB para iniciar automaticamente na inicialização do sistema:

sudo systemctl enable mongod

Verifique se MongoDB está funcionando corretamente:

sudo systemctl status mongod

Você 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:

mongosh

Dentro 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.conf

Encontre a seção security e adicione:

security:
  authorization: enabled

Reinicie MongoDB para aplicar as alterações:

sudo systemctl restart mongod

A 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:

mongosh

Se a autenticação estiver ativada, conecte-se com credenciais:

mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase admin

Passo 2: Operações de banco de dados

Listar todos os bancos de dados:

show dbs

Criar 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:

db

Descartar 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 collections

Descartar 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 })  // Descending

Limitar e paginar resultados:

db.users.find().limit(10).skip(20)  // Page 3 with 10 results per page

Atualizar 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

  1. Alocar RAM suficiente — O mecanismo de armazenamento WiredTiger do MongoDB usa um cache em memória. Defina cacheSizeGB para aproximadamente 50% da RAM do sistema disponível.
  2. Usar índices apropriados — Analise consultas lentas com db.collection.explain("executionStats") e crie índices de acordo.
  3. Monitorar com MongoDB Atlas ou mongostat — Use as ferramentas de linha de comando mongostat e mongotop para monitorar o desempenho em tempo real.
  4. Ativar journaling — O journaling está ativado por padrão e fornece recuperação de falhas; não o desative em produção.
  5. 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.
  6. 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 -e

Adicione 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>&1

Escolhendo o plano AlexHost certo para MongoDB

O plano certo depende da escala, tráfego e requisitos de dados da sua aplicação:

Caso de usoPlano recomendadoPor quê
Desenvolvimento / TesteVPS HostingEconômico, controle total, fácil configuração
Produção pequena a médiaVPS HostingRecursos escaláveis, armazenamento SSD, acesso root
Produção de alto tráfegoServidores DedicadosDesempenho bare-metal, sem compartilhamento de recursos
ML/IA com MongoDBGPU HostingAceleração GPU para cargas de trabalho de processamento de dados
Aplicação web + MongoDBVPS com cPanelInterface 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

Servidores Virtuais Windows
Hospedagem LiteSpeed Segurança Servidores Virtuais
Servidores Virtuais