MongoDB - coleções limitadas

Capped collectionssão coleções circulares de tamanho fixo que seguem a ordem de inserção para oferecer suporte a alto desempenho para criar, ler e excluir operações. Por circular, significa que quando o tamanho fixo alocado para a coleção se esgotar, ela começará a deletar o documento mais antigo da coleção sem fornecer nenhum comando explícito.

As coleções limitadas restringem as atualizações aos documentos se a atualização resultar no aumento do tamanho do documento. Como as coleções limitadas armazenam documentos na ordem do armazenamento em disco, isso garante que o tamanho do documento não aumente o tamanho alocado no disco. Coletas limitadas são melhores para armazenar informações de log, dados de cache ou quaisquer outros dados de alto volume.

Criação de coleção limitada

Para criar uma coleção limitada, usamos o comando createCollection normal, mas com capped opção como true e especificando o tamanho máximo da coleção em bytes.

>db.createCollection("cappedLogCollection",{capped:true,size:10000})

Além do tamanho da coleção, também podemos limitar o número de documentos na coleção usando o max parâmetro -

>db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})

Se você quiser verificar se uma coleção é limitada ou não, use o seguinte isCapped comando -

>db.cappedLogCollection.isCapped()

Se houver uma coleção existente que você planeja converter para limitada, você pode fazer isso com o seguinte código -

>db.runCommand({"convertToCapped":"posts",size:10000})

Este código converteria nossa coleção existente posts para uma coleção limitada.

Consultando coleção limitada

Por padrão, uma consulta de localização em uma coleção limitada exibirá os resultados no pedido de inserção. Mas se você quiser que os documentos sejam recuperados na ordem inversa, use osort comando conforme mostrado no código a seguir -

>db.cappedLogCollection.find().sort({$natural:-1})

Existem alguns outros pontos importantes em relação às coleções limitadas que vale a pena conhecer -

  • Não podemos excluir documentos de uma coleção limitada.

  • Não há índices padrão presentes em uma coleção limitada, nem mesmo no campo _id.

  • Ao inserir um novo documento, o MongoDB não precisa realmente procurar um lugar para acomodar o novo documento no disco. Ele pode inserir cegamente o novo documento no final da coleção. Isso torna as operações de inserção em coleções limitadas muito rápidas.

  • Da mesma forma, ao ler documentos, o MongoDB retorna os documentos na mesma ordem em que estão presentes no disco. Isso torna a operação de leitura muito rápida.