Pular para o conteúdo principal

Criando coleções no MongoDB: Métodos manuais e automáticos

Saiba como as coleções são criadas no MongoDB, quando você deve defini-las explicitamente e as principais opções de configuração.
Atualizado 23 de jun. de 2025  · 5 min lido

Ao trabalhar com o MongoDB, especialmente como desenvolvedor que vem de um banco de dados relacional, uma das primeiras coisas que você notará é a flexibilidade do design do esquema.

As coleções no MongoDB não precisam ser criadas explicitamente com antecedência, mas há momentos em que faz sentido defini-las explicitamente e configurá-las com cuidado.

Neste artigo, veremos como e quando você pode querer criar uma coleção no MongoDB, algumas opções de configuração importantes a serem consideradas e alguns exemplos de código em JS e C# (meu favorito). 

Não se preocupe, temos muita paridade de recursos entre os drivers, portanto, muito do que você vê aqui hoje será possível em <insira o idioma de sua preferência>.

Se você não tem experiência com bancos de dados NoSQL, considere começar com uma Introdução ao NoSQL.

O que é uma coleção do MongoDB?

Antes de vermos como criar coleções, vamos discutir brevemente o que é uma coleção. 

Se você vem de um ambiente SQL, talvez esteja acostumado a ouvir falar de tabelas, linhas e colunas. No MongoDB, os termos são ligeiramente diferentes. Em vez de tabelas, temos coleções e, em vez de linhas, temos documentos com campos e não colunas. 

Um dos superpoderes do MongoDB é seu esquema dinâmico. Isso significa que você não precisa criar uma coleção manualmente antes de usá-la. Se você inserir um documento em uma coleção que ainda não existe, o MongoDB o criará automaticamente. Por exemplo, se você executar: 

db.movies.insertOne({ title: "The Matrix", year: 1999 });

Ele tentará inserir um único documento do filme "The Matrix" na coleção movies. Se ele já existir, o documento será adicionado à coleção. Caso contrário, a coleção movies será criada antes que o novo documento seja adicionado.

Você também pode adicionar vários documentos de uma vez, usando insertMany em vez de insertOne.

Quando você deve definir explicitamente as coleções do MongoDB

Embora você possa permitir que o MongoDB cuide da criação de coleções automaticamente, há bons motivos para definir as coleções com antecedência, especialmente em cenários de produção. A criação explícita de coleções dá a você a oportunidade de:

  • Configure coleções com limite para registro ou armazenamento em cache.
  • Configure regras de validação para impor restrições em seus esquemas.
  • Aplique determinados índices padrão, como TTL (time-to-live). Esses índices em um campo de data excluirão automaticamente os documentos da sua coleção com base em um período de tempo que você especificar.
  • Otimize para cargas de trabalho de gravação pesada, pré-dimensionando as coleções.

É assim que você criaria uma coleçãono MongoDB Shell:

db.createCollection("auditLogs", {
  capped: true,
  size: 10485760, // 10 MB
  max: 1000
});

Ou com validação:

db.createCollection("users", {
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["email", "createdAt"],
      properties: {
        email: {
          bsonType: "string",
          pattern: "^.+@.+$"
        },
        createdAt: {
          bsonType: "date"
        }
      }
    }
  }
});

Embora o MongoDB ofereça suporte a um esquema flexível, você ainda pode querer adicionar regras de validação, como campos obrigatórios, ou especificar propriedades em determinados campos, como tipos de dados ou formatação para e-mails, como visto acima. Isso ocorre se você quiser garantir que seus documentos sigam um esquema específico. 

A aplicação de esquemas será familiar se você tiver experiência com SQL e, mesmo que não tenha, às vezes seus aplicativos em produção precisam ter documentos com formato previsível. Portanto, a validação é excelente para isso!

Criando coleções do MongoDB com o driver C#

Em um aplicativo C#, você também pode criar coleções explicitamente usando o driver do MongoDB. Embora não seja necessário para operações básicas, é aqui que você pode definir opções avançadas de forma programática.

var options = new CreateCollectionOptions
{
    Capped = true,
    MaxSize = 10485760, // 10 MB
    MaxDocuments = 1000
};

await database.CreateCollectionAsync("auditLogs", options);

Para adicionar um validador:

var validator = new BsonDocument
{
    { "$jsonSchema", new BsonDocument
        {
            { "bsonType", "object" },
            { "required", new BsonArray { "email", "createdAt" } },
            { "properties", new BsonDocument
                {
                    { "email", new BsonDocument
                        {
                            { "bsonType", "string" },
                            { "pattern", "^.+@.+$" }
                        }
                    },
                    { "createdAt", new BsonDocument
                        {
                            { "bsonType", "date" }
                        }
                    }
                }
            }
        }
    }
};

var collectionOptions = new CreateCollectionOptions<BsonDocument>
{
    Validator = new BsonDocumentFilterDefinition<BsonDocument>(validator)
};

await database.CreateCollectionAsync("users", collectionOptions);

Para desenvolvedores Python, o tutorial Introduction to MongoDB and Python é um ótimo recurso.

Principais opções de configuração de coleções que você deve conhecer

Ao criar coleções explicitamente, aqui estão algumas opções que você pode querer conhecer:

  • cappedcria uma coleção de tamanho fixo
  • sizeTamanho máximo em bytes para uma coleção limitada
  • max: número máximo de documentos permitidos
  • validator: Objeto JSON na sintaxe do esquema que define a validação do esquema
  • expireAfterSecondsUsado com índices TTL para lidar com a exclusão automática de documentos

Você também pode aplicar índices na criação do siteme ou logo depois. O MongoDB não criará índices automaticamente, a menos que eles sejam necessários para _id.

Os índices no MongoDB permitem que você melhore o desempenho dos campos mais acessados. Eles armazenarão esses valores em cache na memória, o que significa que não haverá chamadas ao disco rígido para recuperação, o que pode economizar muito tempo e desempenho ao acessá-los regularmente.

Práticas recomendadas para definir coleções do MongoDB

Aqui estão algumas diretrizes para ajudar você a decidir quando definir coleções explicitamente:

  • Criação implícita para provas rápidas de conceitos ou desenvolvimento local, ou quando o usuário final é capaz de gerar o conteúdo dinamicamente
  • Criação explícita para quando você quiser aplicar validação ou configurações para indexação ou desempenho

Conclusão

O MongoDB é conhecido por seu esquema flexível, que nos dá flexibilidade na forma como estruturamos nossos dados, o que inclui a forma como criamos e gerenciamos coleções. Embora a criação implícita seja rápida e conveniente, as definições explícitas de coleções desbloqueiam recursos avançados, como validação de esquema, comportamento limitado e ajuste de desempenho.

Como sempre, o MongoDB Atlas facilita ainda mais o gerenciamento de coleções com ferramentas baseadas na interface do usuário, automação e insights de desempenho integrados. E, se você estiver trabalhando em .NET, o driver C# o ajudará com modelos de tipo forte e APIs fluentes.

Ao considerar as práticas recomendadas para a definição de coleções do MongoDB,você também pode se beneficiar da compreensão dosprincípios fundamentais de design de banco de dados.

Boa codificação! Que suas coleções sejam rápidas, válidas e bem indexadas!

Torne-se um engenheiro de dados

Comprove suas habilidades como engenheiro de dados pronto para o trabalho.
Acelerar minha carreira de dados

Perguntas frequentes

Qual é a diferença entre a criação implícita e explícita de coleções no MongoDB?

  • Criação implícita: O MongoDB cria automaticamente uma coleção quando você insere um documento em uma coleção inexistente. Isso é útil para prototipagem ou desenvolvimento rápido.
  • Criação explícita: Você define manualmente uma coleção antes de usá-la, geralmente para definir configurações avançadas, como regras de validação, tamanho máximo ou indexação. Isso é recomendado para ambientes de produção. 

Quando devo criar explicitamente uma coleção em vez de permitir que o MongoDB a crie automaticamente?

Você deve criar explicitamente uma coleção quando: validação de esquema, coleções com limite, otimizações de desempenho e índices padrão.

Como faço para impor um esquema no MongoDB se ele não tiver esquema?

O MongoDB oferece suporte à validação do esquema JSON, que permite que você defina regras para a estrutura do documento.

O que são coleções limitadas e quando devo usá-las?

As coleções com limite são coleções de tamanho fixo que substituem automaticamente os documentos antigos quando estão cheios. 

Como faço para criar uma coleção com um índice TTL (Time-To-Live)?

Os índices TTL excluem automaticamente os documentos após um tempo especificado. Primeiro, crie a coleção e, em seguida, adicione o índice.


Luce Carter's photo
Author
Luce Carter
LinkedIn

Luce Carter é defensora sênior do desenvolvedor no MongoDB, Microsoft MVP, Contentful Dev Hero, autora de Beginning MongoDB Atlas with .NET e amante de código, luz do sol e aprendizado.

Tópicos

Saiba mais sobre o MongoDB com estes cursos!

Curso

Introduction to MongoDB in Python

4 h
21.8K
Learn to manipulate and analyze flexibly structured data with MongoDB.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Bancos de dados NoSQL: O que todo cientista de dados precisa saber

Descubra para que servem os bancos de dados NoSQL, por que os cientistas de dados os utilizam e uma lista dos melhores bancos de dados NoSQL disponíveis.
Zoumana Keita 's photo

Zoumana Keita

12 min

Tutorial

Criando e personalizando tabelas dinâmicas no Power BI

Saiba como criar tabelas dinâmicas personalizáveis no Power BI com formatação condicional avançada e algumas dicas de otimização.
Joleen Bothma's photo

Joleen Bothma

9 min

Tutorial

Tutorial do MySQL: Um guia abrangente para iniciantes

Descubra o que é o MySQL e como começar a usar um dos sistemas de gerenciamento de banco de dados mais populares.
Javier Canales Luna's photo

Javier Canales Luna

15 min

Tutorial

Hierarquias do Power BI: Um guia abrangente

Saiba como criar, editar, excluir e implementar hierarquias no Power BI.
Joleen Bothma's photo

Joleen Bothma

11 min

Tutorial

SELEÇÃO de várias colunas no SQL

Saiba como selecionar facilmente várias colunas de uma tabela de banco de dados em SQL ou selecionar todas as colunas de uma tabela em uma consulta simples.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Como instalar e configurar o MySQL no Docker

Saiba como instalar e configurar o banco de dados MySQL dentro de contêineres do Docker. O tutorial inclui conceitos como conexão com servidores MySQL, execução de clientes MySQL para conexão com contêineres e assim por diante.
Bex Tuychiev's photo

Bex Tuychiev

12 min

Ver maisVer mais