Criar uma collection com limite
Nesta página
Para criar uma collection limitada, especifique a opção capped
para o método db.createCollection()
ou para o comando create
.
É preciso criar coleções limitadas explicitamente. Você não pode criar uma coleção limitada implicitamente inserindo dados em uma coleção inexistente.
Ao criar uma coleção limitada, é preciso especificar o tamanho máximo da coleção. O MongoDB pré-aloca o armazenamento especificado para a coleção. O tamanho da coleção limitada inclui um pequeno volume de espaço para a sobrecarga interna.
Opcionalmente, você pode especificar um número máximo de documentos para a coleção. O MongoDB remove documentos mais antigos se uma coleção atingir o limite de tamanho máximo antes de atingir a contagem máxima de documentos.
Sobre esta tarefa
Geralmente, os índices TTL (Time To Live) oferecem melhor desempenho e mais flexibilidade do que as capped collections. Os índices TTL expiram e removem dados de collections normais com base no valor de um campo digitado por data e um valor TTL para o índice.
As coleções limitadas serializam as operações de gravação e, portanto, têm pior desempenho simultâneo de inserção, atualização e exclusão do que as coleções não limitadas. Antes de criar uma coleção limitada, avalie se não é possível usar um índice TTL.
Passos
Os exemplos a seguir mostram como:
Crie uma coleção limitada com um tamanho máximo
Crie uma collection limitada chamada log
que tenha um tamanho máximo de 100.000 bytes:
db.createCollection( "log", { capped: true, size: 100000 } )
Observação
O valor que você fornece para o campo size
deve ser maior que 0
e menor ou igual a 1024^5
(1 PB). O MongoDB arredonda o size
de todas as coletas limitadas até o número inteiro mais próximo de 256, em bytes.
Criar uma coleção limitada com um número máximo de documentos
Crie uma capped collection chamada log2
que tenha um tamanho máximo de 5,242,880 bytes e possa armazenar um máximo de 5,000 documentos:
db.createCollection( "log2", { capped: true, size: 5242880, max: 5000 } )
Importante
O campo size
é sempre obrigatório, mesmo quando você especifica o número max
de documentos.