MongoDB - Colecciones limitadas

Capped collectionsson colecciones circulares de tamaño fijo que siguen el orden de inserción para admitir un alto rendimiento para las operaciones de creación, lectura y eliminación. Por circular, significa que cuando se agota el tamaño fijo asignado a la colección, comenzará a eliminar el documento más antiguo de la colección sin proporcionar ningún comando explícito.

Las colecciones limitadas restringen las actualizaciones de los documentos si la actualización da como resultado un mayor tamaño del documento. Dado que las colecciones limitadas almacenan los documentos en el orden del almacenamiento en disco, se garantiza que el tamaño del documento no aumente el tamaño asignado en el disco. Las colecciones limitadas son las mejores para almacenar información de registro, datos de caché o cualquier otro dato de gran volumen.

Creación de una colección limitada

Para crear una colección limitada, usamos el comando normal createCollection pero con capped opción como true y especificando el tamaño máximo de colección en bytes.

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

Además del tamaño de la colección, también podemos limitar el número de documentos de la colección utilizando el max parámetro -

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

Si desea verificar si una colección está limitada o no, use lo siguiente isCapped comando -

>db.cappedLogCollection.isCapped()

Si hay una colección existente que planea convertir a limitada, puede hacerlo con el siguiente código:

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

Este código convertiría nuestra colección existente posts a una colección limitada.

Consultando colección limitada

De forma predeterminada, una consulta de búsqueda en una colección limitada mostrará los resultados en el orden de inserción. Pero si desea que los documentos se recuperen en orden inverso, utilice elsort comando como se muestra en el siguiente código -

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

Hay algunos otros puntos importantes con respecto a las colecciones limitadas que vale la pena conocer:

  • No podemos eliminar documentos de una colección limitada.

  • No hay índices predeterminados presentes en una colección limitada, ni siquiera en el campo _id.

  • Al insertar un nuevo documento, MongoDB no tiene que buscar realmente un lugar para acomodar el nuevo documento en el disco. Puede insertar ciegamente el nuevo documento al final de la colección. Esto hace que las operaciones de inserción en colecciones limitadas sean muy rápidas.

  • De manera similar, mientras lee documentos, MongoDB devuelve los documentos en el mismo orden en que están presentes en el disco. Esto hace que la operación de lectura sea muy rápida.