Olá,
No artigo de Março/2020 eu comentei sobre índices TTL no MongoDB que pode ser criado para automaticamente remover documentos da collection de acordo com o valor especificado na propriedade expireAfterSeconds do índice. Agora irei comentar sobre capped collections. Uma collection no MongoDB pode ser criada para que o seu tamanho não ultrapasse um tamanho definido em bytes. Se por acaso quisermos criar uma collection chamada "log_events" na qual seu tamanho não ultrapasse 5MB, poderemos utilizar a sintaxe abaixo para criá-la.
db.createCollection( "log_events", { capped: true, size: 5242880 } )
Nesse caso o MongoDB irá se encarregar de que os documentos mais antigos sejam excluídos de forma a dar espaço para os novos documentos inseridos e assim mantendo o tamanho máximo da collection em 5MB.
Caso queiramos limitar também o número de documentos dentro da collection, poderemos utilizar o parâmetro "max" como no exemplo abaixo na qual limito o tamanho da collection para 5MB até um total de 100 mil documentos.
db.createCollection("log_events", { capped : true, size : 5242880, max : 100000 } )
Vale a pena salientar que um documento dentro de uma capped collection não pode ter seu tamanho alterado após a inserção. Caso isso ocorra, o erro abaixo será emitido.
Command failed with error 10003: 'Cannot change the size of a document in a capped collection: 608 != 1601' on server.
The full response is {"ok": 0.0, "errmsg": "Cannot change the size of a document in a capped collection: 608 != 1601", "code": 10003}
Uma capped collection não pode ser revertida para uma collection normal, mas é possível alterar uma collection normal para uma capped collection conforme a seguir.
db.runCommand( { convertToCapped: "log_events", size: 5242880 } )
Nenhum comentário:
Postar um comentário