O que é MongoDB e para que serve

MongoDB é um banco de dados NoSQL que guarda dados como documentos parecidos com JSON, agrupados em coleções, sem exigir um esquema fixo. Serve para dados que mudam de forma, como perfis, catálogos e eventos.

Atualizado em 4 min de leitura

Objetivos de aprendizado

Depois de ler este artigo, você vai conseguir:

  • Entender o modelo de documentos e coleções do MongoDB
  • Fazer as operações básicas de inserir e buscar com o driver oficial do Node.js
  • Saber quando o MongoDB é boa escolha e quando outro banco serve melhor
Nesta página

O MongoDB aparece com frequência em projetos de bots, APIs e aplicações web. Em vez de tabelas rígidas, ele guarda cada registro como um documento: uma estrutura de campos e valores com cara de objeto JSON. Isso combina com linguagens como JavaScript e Python, em que os dados já circulam como objetos.

Se você ainda está comparando opções, qual banco de dados escolher compara o MongoDB com as alternativas.

Tabelacolunas fixasidnomeemailColeçãocampos diferentes{ }{ }{ }{_id: ObjectId(…),_id úniconome: "Alice",campo: valorendereco: { cidade, estado },objeto aninhadointeresses: ["leitura", …]lista (array)}
Na tabela toda linha tem as mesmas colunas; na coleção cada documento traz os próprios campos, objetos e listas.

O que é um banco de dados orientado a documentos?#

Em um banco relacional, você define tabelas com colunas fixas e todo registro segue o mesmo formato. Em um banco orientado a documentos, cada registro é um documento, e documentos da mesma coleção podem ter campos diferentes.

Um documento do MongoDB parece com isto:

javascript
{
  _id: ObjectId("507f1f77bcf86cd799439011"),
  nome: "Alice",
  nascimento: ISODate("1990-01-01T00:00:00Z"),
  endereco: { cidade: "Goiânia", estado: "GO" },
  interesses: ["leitura", "trilha", "código"]
}

Os valores podem ser textos, números, datas, outros documentos (como endereco) ou listas (como interesses). Guardar o endereço dentro do documento da pessoa evita um join: uma única leitura traz tudo.

Como o MongoDB organiza os dados?#

Quatro conceitos cobrem quase tudo:

  • Documento: um registro, com pares de campo e valor. Todo documento tem um _id único, que o MongoDB cria se você não informar.
  • Coleção: um grupo de documentos, equivalente a uma tabela, mas sem esquema obrigatório.
  • Banco (database): um conjunto de coleções.
  • BSON: o formato binário em que o MongoDB armazena os documentos. Ele estende o JSON com tipos como ObjectId, datas e dados binários.

Se você quiser impor regras (campos obrigatórios, tipos), pode adicionar validação de esquema à coleção. A flexibilidade é uma escolha, não uma obrigação.

Como o MongoDB funciona por dentro?#

Três recursos definem a arquitetura, segundo o manual oficial:

  • Replicação com failover automático: os dados são copiados entre vários servidores (um conjunto de réplicas). Se o servidor primário cai, os outros elegem um novo.
  • Sharding: a divisão dos dados entre máquinas por uma chave, para escalar na horizontal quando um servidor só não dá conta.
  • Transações ACID: operações em vários documentos que valem por inteiro ou não valem, inclusive em clusters particionados.

Na prática, um projeto pequeno roda num único servidor. Replicação e sharding entram quando o volume de dados ou a exigência de disponibilidade crescem.

Como usar o MongoDB com Node.js?#

Instale o driver oficial e guarde a string de conexão em uma variável de ambiente, nunca no código:

bash
npm install mongodb
javascript
const { MongoClient } = require("mongodb");

const client = new MongoClient(process.env.MONGODB_URI);

async function main() {
  try {
    await client.connect();
    const usuarios = client.db("app").collection("usuarios");

    const { insertedId } = await usuarios.insertOne({ nome: "Ada", cargo: "engenheira" });
    console.log("Inserido:", insertedId);

    const encontrados = await usuarios.find({ cargo: "engenheira" }).toArray();
    console.log("Encontrados:", encontrados);
  } finally {
    await client.close();
  }
}

main().catch(console.error);

A coleção usuarios não precisa existir antes: o MongoDB a cria na primeira inserção. Para consultas rápidas em campos que você filtra com frequência, crie um índice com createIndex. Sem índice, o banco lê a coleção inteira a cada busca.

Para que serve o MongoDB?#

O MongoDB funciona bem quando os dados têm formato variável ou são lidos em bloco:

  • Perfis e configurações de usuários: cada usuário pode ter campos diferentes.
  • Bots: configurações por servidor, preferências e economia virtual, em que cada registro é um objeto.
  • Catálogos de produtos: itens com atributos distintos por categoria.
  • Eventos e logs: muitos registros de formato parecido, mas que evoluem.
  • Prototipagem rápida: o esquema muda sem migrações.

Quando não usar o MongoDB?#

Evite ou reconsidere nestes casos:

  • Dados muito relacionados: se você faz joins constantes entre várias entidades, um banco relacional como o PostgreSQL costuma ser mais natural.
  • Documentos muito grandes: o limite é de 16 MiB por documento, e o aninhamento vai até 100 níveis. Arquivos grandes pertencem a um armazenamento de objetos, com a URL guardada no documento.
  • Transações longas: o padrão é 60 segundos por transação.
  • Cache de acesso muito rápido: um banco em memória como o Redis atende melhor.

A flexibilidade também cobra um preço: sem esquema, um erro de digitação no nome de um campo passa despercebido. Defina convenções e, se precisar, ative a validação.

Que termos aparecem junto com MongoDB?#

  • NoSQL: nome genérico para bancos que não usam tabelas relacionais.
  • Atlas: o serviço de nuvem da própria MongoDB, Inc. Você também pode hospedar o MongoDB por conta própria ou em outros provedores.
  • Mongoose: biblioteca do Node.js que adiciona esquemas e modelos sobre o driver.
  • Aggregation pipeline: linguagem do MongoDB para filtrar, agrupar e transformar dados em etapas.
  • GridFS: recurso para guardar arquivos maiores que 16 MiB dividindo-os em partes.

Quando chegar a hora de colocar o banco no ar, como hospedar um banco de dados mostra o caminho.

Como fazer isso na Square Cloud#

Na Square Cloud, a hospedagem de MongoDB começa no plano Standard; o Hobby não inclui bancos. Você cria o banco pelo painel, sempre em uma versão recente, e ele fica pronto em segundos. O banco roda no mesmo datacenter das suas aplicações, com latência média de cerca de 1 ms, como nó único (standalone, sem replica set) e com TLS obrigatório.

Para conectar a aplicação, copie a URL de conexão completa que o painel entrega, salve como variável de ambiente (a MONGODB_URI do exemplo acima) e reinicie a aplicação. Baixe também o certificado: o cliente precisa confiar na CA e apresentar o .pem.

Você tira snapshots manuais quando quiser, e todo plano com bancos inclui também um snapshot automático diário. Você pode restaurar um snapshot no mesmo banco, em outro do mesmo motor ou num banco novo, ou baixá-lo como .zip.

Veja detalhes e planos em Hospedagem de MongoDB.

Hospedagem de bancos

MongoDB, PostgreSQL, MySQL e Redis no mesmo datacenter do app

Saiba mais

Perguntas frequentes

MongoDB é SQL ou NoSQL?

É NoSQL, do tipo orientado a documentos. Em vez de tabelas com linhas e colunas, guarda documentos em coleções, e as consultas usam a API e a linguagem de agregação do próprio MongoDB, não SQL.

O MongoDB tem transações?

Sim. Ele oferece transações ACID com vários documentos, inclusive em clusters particionados (sharded). Por padrão, uma transação tem limite de 60 segundos de duração.

Qual o tamanho máximo de um documento no MongoDB?

16 MiB por documento BSON. Para arquivos maiores, a documentação indica o GridFS, ou você pode guardar o arquivo em um armazenamento de objetos e salvar só a URL no documento.

MongoDB é melhor que PostgreSQL?

Nenhum é melhor em tudo. O MongoDB combina com dados de formato variável e leitura de um documento inteiro por vez. O PostgreSQL combina com dados muito relacionados e consultas com muitos joins.

Próximo artigoQuanto custa hospedar PostgreSQLHospedar PostgreSQL custa de zero a centenas de dólares por mês. Veja o que define o preço (RAM, disco, réplicas, tráfego), modelos de cobrança e como estimar o seu.

Mais em Bancos de dados

Ver todos os 24 artigos