Menu Docs

convertToCapped

convertToCapped

Aviso

Não execute este comando em collection fragmentadas

O MongoDB não suporta o comando convertToCapped em collections fragmentadas.

O comando convertToCapped converte uma coleção não limitada existente em uma coleção limitada no mesmo banco de dados.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Importante

Este comando não é suportado em instâncias sem servidor. Para obter mais informações, consulte Comandos não suportados.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O comando tem a seguinte sintaxe:

{ convertToCapped: <collection>,
size: <capped size>,
writeConcern: <document>,
comment: <any>
}

O comando utiliza os seguintes campos:

Campo
Descrição

convertToCapped

O nome da collection existente para converter.

Tamanho

O tamanho máximo, em bytes, para a collection limitada.

writeConcern

Opcional. Um documento que Express a drop referência de escrita do comando . Omita para usar a referência de escrita padrão.

comment

Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:

Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).

convertToCapped pega uma coleção existente (<collection>) e a transforma em uma collection limitada com um tamanho máximo em bytes, especificado pelo argumento size (<capped size>).

Durante o processo de conversão, o comando convertToCapped apresenta o seguinte comportamento:

  • O MongoDB atravessa os documentos na coleção original em
    ordem natural e carrega os documentos em uma nova collection limitada.
  • Se o capped size especificado para a collection limitada for
    menor que o tamanho da coleção original sem limite, o MongoDB substituirá os documentos na collection limitada com base na ordem de inserção ou no primeiro pedido.
  • Internamente, para converter a coleção, o MongoDB utiliza o seguinte

    Procedimento

    • cloneCollectionAsCapped o comando cria o limite
      coleção e importa os dados.
    • O MongoDB descarta a collection original.

    • renameCollection renomeia a nova collection limitada
      ao nome da coleção original.
  • Isso mantém uma trava exclusiva do banco de dados durante a operação. Outras operações que travam o mesmo banco de dados serão bloqueadas até a operação ser concluída. Consulte Quais travas são feitas por algumas operações comuns do cliente? para saber quais operações travam o banco de dados.

Aviso

O convertToCapped não recriará índices da coleção original na nova coleção, exceto o índice do campo _id. Se você precisar de índices nesta coleção, será necessário criar esses índices após a conversão terminar.

O exemplo a seguir usa db.collection.insertOne() para criar uma collection events e db.collection.stats() para obter informações sobre a collection:

db.events.insertOne( { click: 'button-1', time: new Date() } )
db.events.stats()

O MongoDB retornará o seguinte:

{
"ns" : "test.events",
...
"capped" : false,
...
}

Para converter a collection events em uma collection limitada e exibir as informações atualizadas da collection, execute os seguintes comandos:

db.runCommand( { convertToCapped: 'events', size: 8192 } )
db.events.stats()

O MongoDB retornará o seguinte:

{
"ns" : "test.events",
...
"capped" : true,
"max" : NumberLong("9223372036854775807"),
"maxSize" : 8192,
...
}

O convertToCapped não recriará índices da coleção original na nova coleção, exceto o índice do campo _id. Se você precisar de índices nesta coleção, será necessário criar esses índices após a conversão terminar.

Dica

Veja também: