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 constroem 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 do MongoDB.

O que é MongoDB e por que deveria 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 comércio eletrônico, 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 conseguem fornecer. Com um plano de VPS Hosting da AlexHost, você obtém:

  • Acesso root completo para configurar MongoDB exatamente conforme sua aplicação requer
  • Recursos dedicados de RAM e CPU para lidar com cargas de leitura/escrita exigentes
  • Ambiente isolado que elimina o problema do “vizinho barulhento” comum em hospedagem compartilhada
  • Dimensionamento vertical e horizontal contínuo 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.

Secção 1: Compreender a Arquitetura Central do MongoDB

Antes de mergulhar na instalação, é importante compreender como o MongoDB organiza e gere dados.

Documentos

A unidade fundamental de dados no 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 bases de dados SQL. No entanto, ao contrário das tabelas SQL, as coleções não impõem um esquema fixo — os documentos dentro da mesma coleção podem ter campos completamente diferentes.

Bases de Dados

Um servidor MongoDB pode alojar múltiplas bases de dados, cada uma contendo o seu próprio conjunto de coleções. Isto torna fácil isolar dados para diferentes aplicações ou ambientes (por exemplo, desenvolvimento, teste, produção) numa única instância de servidor.

Secção 2: Características Principais do MongoDB

2.1 Armazenamento Orientado a Documentos

O modelo de documento do MongoDB é uma das suas características mais poderosas. Como cada documento pode ter uma estrutura diferente, os desenvolvedores podem evoluir o esquema da base de dados organicamente conforme os requisitos da aplicação mudam — sem executar migrações complexas de ALTER TABLE ou experienciar tempo de inatividade.

Esta 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 é o seu suporte nativo para escalabilidade horizontal através de sharding. O sharding distribui dados por múltiplos servidores (chamados shards), permitindo ao MongoDB lidar com volumes de dados e níveis de throughput que sobrecarregariam uma única máquina.

Cada shard contém um subconjunto dos dados totais, e um router mongos direciona consultas para o(s) shard(s) apropriado(s) com base numa chave de shard configurável. Esta arquitetura permite escalabilidade quase linear conforme o seu volume de dados e carga de consultas crescem.

Para ambientes de produção com alto tráfego, alojar MongoDB nos Servidores Dedicados da AlexHost garante que cada shard tem acesso a recursos de hardware isolados e de alto desempenho.

2.3 Alta Disponibilidade com Replica Sets

MongoDB fornece tolerância a falhas incorporada através de replica sets — grupos de instâncias MongoDB que mantêm cópias idênticas dos mesmos dados. Um replica set 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 em eleições sem armazenar dados

Se o nó primário falhar, o replica set elege automaticamente um novo primário a partir dos secundários disponíveis, minimizando o tempo de inatividade e garantindo a durabilidade dos dados.

2.4 Linguagem de Consulta Poderosa e Framework de Agregação

A Linguagem de Consulta MongoDB (MQL) do MongoDB suporta um conjunto rico de operações incluindo:

  • Filtragem ao nível do campo com operadores de comparação, lógicos e de elemento
  • Projeção para devolver apenas campos específicos
  • Ordenação e paginação com sort(), limit() e skip()
  • Pesquisa 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 em 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 multi-campo
  • Índices multikey para campos de array
  • Índices de texto para pesquisa 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 registos)

Secção 3: Instalação do MongoDB no Ubuntu (Passo a Passo)

Esta secção guia-o através de uma instalação completa do MongoDB no Ubuntu 20.04 LTS (Focal Fossa). Estes passos são otimizados para um ambiente VPS AlexHost com acesso root ou sudo.

Pré-requisitos

  • Servidor Ubuntu 20.04 LTS
  • Uma conta de utilizador com privilégios sudo
  • Familiaridade básica com a linha de comandos Linux

Se ainda não tem um servidor, pode criar um VPS Ubuntu totalmente configurado em minutos com Alojamento VPS AlexHost.

Passo 1: Importar a Chave Pública GPG do MongoDB

Os pacotes MongoDB são assinados com uma chave GPG para verificar a 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 -

Deverá ver OK como resultado, confirmando que a chave foi importada com sucesso.

Passo 2: Adicionar o Repositório MongoDB

Crie um ficheiro 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 precisar de uma versão diferente.

Passo 3: Atualizar a Base de Dados de Pacotes

Atualize o 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

Isto instala os seguintes pacotes:

  • mongod — o daemon da base de dados MongoDB
  • mongos — o router de fragmentação MongoDB
  • mongosh — a shell MongoDB (substituição moderna da shell mongo legada)
  • Ferramentas e bibliotecas MongoDB

Passo 5: Iniciar e Ativar o Serviço MongoDB

Inicie o serviço MongoDB imediatamente:

sudo systemctl start mongod

Ative o MongoDB para iniciar automaticamente no arranque do sistema:

sudo systemctl enable mongod

Verifique se o MongoDB está a funcionar corretamente:

sudo systemctl status mongod

Deverá ver resultado indicando que o serviço está active (running). Se o MongoDB iniciou com sucesso, também verá uma linha confirmando que está a escutar na porta 27017.

Passo 6: Proteger a Sua Instalação MongoDB (Recomendado)

Antes de utilizar o MongoDB em qualquer ambiente de produção ou acessível pela internet, é crítico ativar a autenticação. Por padrão, o MongoDB não requer um nome de utilizador ou palavra-passe.

Criar um utilizador administrativo:

mongosh

Dentro da shell MongoDB:

use admin

db.createUser({
  user: "adminUser",
  pwd: "YourStrongPasswordHere",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
})

Ativar autenticação editando o ficheiro de configuração MongoDB:

sudo nano /etc/mongod.conf

Encontre a secção security e adicione:

security:
  authorization: enabled

Reinicie o MongoDB para aplicar as alterações:

sudo systemctl restart mongod

A partir deste momento, todas as ligações ao MongoDB exigirão credenciais válidas.

Secção 4: Utilizar MongoDB — Comandos e Operações Essenciais

Com MongoDB instalado e seguro, vamos explorar as operações mais importantes que utilizará diariamente.

Passo 1: Aceder à Shell MongoDB

Conecte-se à sua instância MongoDB utilizando a shell moderna mongosh:

mongosh

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

mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase admin

Passo 2: Operações de Base de Dados

Listar todas as bases de dados:

show dbs

Criar ou mudar para uma base de dados:

use mydatabase

> MongoDB cria a base de dados automaticamente quando insere dados nela pela primeira vez.

Verificar a base de dados atualmente selecionada:

db

Eliminar uma base de dados:

db.dropDatabase()

Passo 3: Operações de Coleção

Criar uma coleção explicitamente:

db.createCollection("users")

Listar todas as coleções na base de dados atual:

show collections

Eliminar uma coleção:

db.users.drop()

Passo 4: Operações CRUD de Documentos

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 numa 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 } })

Devolver 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" })

Ordenar 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 } }
)

Eliminar Documentos

Eliminar um único documento:

db.users.deleteOne({ name: "Dave" })

Eliminar 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 das 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 numa coleção:

db.users.getIndexes()

Passo 6: Pipeline de Agregação

A estrutura de agregação permite-lhe realizar análises de dados complexas diretamente no MongoDB.

Exemplo: Contar utilizadores por função e ordenar por contagem:

db.users.aggregate([
  { $group: { _id: "$role", count: { $sum: 1 } } },
  { $sort: { count: -1 } }
])

Exemplo: Filtrar, agrupar e calcular a idade média por função:

db.users.aggregate([
  { $match: { department: "Engineering" } },
  { $group: { _id: "$role", avgAge: { $avg: "$age" }, total: { $sum: 1 } } },
  { $sort: { avgAge: 1 } }
])

Secção 5: Configuração e Otimização de Desempenho do MongoDB

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 accordingly.
  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 connection pooling — Configure o driver MongoDB da sua aplicação para usar connection pooling e 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.

Secção 6: Cópia de Segurança e Restauração do MongoDB

As cópias de segurança regulares são essenciais para qualquer base de dados em produção. MongoDB fornece ferramentas integradas para este fim.

Criar uma Cópia de Segurança com mongodump

mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d)

Restaurar a partir de uma Cópia de Segurança com mongorestore

mongorestore --uri="mongodb://adminUser:password@localhost:27017" /backup/mongodb/20240115/

Automatizar Cópias de Segurança com Cron

Adicione uma tarefa cron para executar cópias de segurança diárias automaticamente:

sudo crontab -e

Adicione a seguinte linha para executar uma cópia de segurança 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

Escolher o Plano AlexHost Certo para MongoDB

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

Caso de UsoPlano RecomendadoPor Quê
Desenvolvimento / TestesVPS HostingEconómico, controlo total, configuração fácil
Produção Pequena a MédiaVPS HostingRecursos escaláveis, armazenamento SSD, acesso root
Produção com Alto TráfegoDedicated ServersDesempenho bare-metal, sem partilha de recursos
ML/AI com MongoDBGPU HostingAceleração GPU para cargas de trabalho de processamento de dados
Aplicação Web + MongoDBVPS with cPanelInterface de gestão fácil ao lado da sua base de dados

Para aplicações que também requerem um frontend web, notificações por email ou conexões SSL-seguras, a AlexHost oferece SSL Certificates e Email Hosting para completar a sua stack de infraestrutura.

Perguntas Frequentes

P: O MongoDB é gratuito?

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 o 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. O Shared Web Hosting da AlexHost é mais adequado para aplicações PHP/MySQL, enquanto implantações MongoDB devem usar um VPS ou servidor dedicado.

P: Como me conecto ao MongoDB a partir 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 porta 27017 apenas de IPs confiáveis, e use uma string de conexão no formato: mongodb://username:password@your-server-ip:27017/dbname.

P: Qual é a diferença entre MongoDB e MySQL?

MySQL é um banco de dados relacional que usa tabelas estruturadas e SQL. MongoDB é um banco de dados de documentos NoSQL que armazena documentos flexíveis semelhantes a JSON. MongoDB se destaca no tratamento de dados não estruturados ou semi-estruturados e dimensionamento horizontal, enquanto MySQL é mais adequado para aplicações com dados relacionais complexos e requisitos rigorosos de conformidade ACID.

Conclusão

MongoDB é uma tecnologia de banco de dados transformadora que capacita os desenvolvedores a construir aplicações modernas e escaláveis sem as limitações de esquemas relacionais rígidos. Seu modelo orientado a documentos, escalabilidade horizontal nativa através de sharding, alta disponibilidade integrada via replica sets e poderoso aggregation framework o tornam um dos bancos de dados mais versáteis disponíveis hoje.

Ao hospedar MongoDB em um plano de VPS Hosting da AlexHost, você obtém o controle total, recursos dedicados e infraestrutura confiável necessários para executar MongoDB de forma eficaz — seja você prototipando sua primeira aplicação ou gerenciando um sistema de produção com alto tráfego.

Siga as etapas de instalação e configuração neste guia para colocar sua instância MongoDB em funcionamento, implemente medidas de segurança adequadas desde o início e aproveite indexação e o aggregation pipeline para construir aplicações performáticas e orientadas por dados.

Tem dúvidas sobre sua configuração de MongoDB ou precisa de ajuda para escolher o plano de hospedagem certo? A equipe de suporte especializada da AlexHost está disponível 24/7 para ajudá-lo em cada etapa do caminho.