convertToCapped
Nesta página
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 collection não limitada existente em umacapped collection dentro do mesmo banco de dados.O comando tem a seguinte sintaxe:
{ convertToCapped: <collection>, size: <capped size>, writeConcern: <document>, comment: <any> } O comando utiliza os seguintes campos:
CampoDescriçãoconvertToCappedO nome da collection existente para converter.TamanhoO tamanho máximo, em bytes, para a collection limitada.Escreva preocupaçãocomment
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:
mensagens de log do mongod, no campo
attr.command.cursor.comment
.Saída do perfil do banco de dados, no campo
command.comment
.Saída de
currentOp
, no campocommand.comment
.
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 coleção limitada com um tamanho máximo em bytes, especificado pelo argumentosize
(<capped size>
).Durante o processo de conversão, o comando
convertToCapped
apresenta o seguinte comportamento:O MongoDB percorre o documento na collection original em ordem de armazenamento e carrega o documento em uma nova collection limitada.
Se o
capped size
especificado para a collection limitada for menor que o tamanho da collection original sem limite, o MongoDB substituirá os documento na collection limitada com base na ordem de inserção ou na ordem do primeiro a entrar e do primeiro a sair .Internamente, para converter a collection, o MongoDB usa o seguinte procedimento
cloneCollectionAsCapped
o comando cria a collection limitada e importa os dados.O MongoDB descarta a collection original.
renameCollection
renomeia a nova coleção limitada para o 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.
Exemplo
Converter uma collection
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.