Las colecciones limitadas son colecciones de tamaño fijo, lo que significa que cuando creamos la colección, debemos fijar el tamaño máximo de la colección (en bytes) y la cantidad máxima de documentos que puede almacenar. Después de la creación, si intentamos agregar más de documentos a su capacidad, sobrescribe los documentos existentes. Admite operaciones de alto rendimiento, que son útiles cuando insertamos y recuperamos documentos según el orden de inserción. El funcionamiento de la colección limitada es similar a los búferes circulares, lo que significa que una vez que se asigna el espacio fijo para la colección limitada, crea espacios para los nuevos documentos sobrescribiendo los documentos más antiguos de la colección dada. La colección limitada también puede tener un campo _id y, de forma predeterminada, cada campo _id tiene un índice.
¿Cómo crear una colección Capped?
Creamos las colecciones limitadas usando el método createCollection() en MongoDB. Cuando creamos una nueva colección limitada, debemos especificar el tamaño máximo de la colección en bytes, que MongoDB preasignará para la colección. El tamaño de la colección limitada contiene una pequeña cantidad de espacio para la sobrecarga interna y si el valor del campo de tamaño es menor o igual a 4096, la capacidad de la colección es de 4096 bytes. De lo contrario, MongoDB aumentará automáticamente el tamaño para convertirlo en un múltiplo entero de 256 y especificará un recuento máximo de documentos utilizando el campo máximo. Si la colección determinada alcanza el límite de tamaño máximo antes de alcanzar el recuento máximo de documentos, MongoDB elimina los documentos más antiguos para crear espacio para el nuevo documento.
Sintaxis:
db.createCollection(<nombre>, {tope: <booleano>, autoIndexId: <booleano>, tamaño: <número>, máx.: <número>, motor de almacenamiento: <documento>, validador: <documento>, nivel de validación: <string> , ValidationAction: <string>, indexOptionDefaults: <document>, viewOn: <string>, pipeline: <pipeline>, collation: <document>, writeConcern: <document>})
Parámetros:
- name: Representa el nombre de la colección y es de tipo string.
- options: Es un parámetro opcional.
Parámetros opcionales:
- capped: Se utiliza para crear una colección capped. Si el valor de este campo es verdadero, debe especificar el tamaño máximo en el campo de tamaño. Es de tipo booleano.
- autoIndexId: si el valor de este campo es falso, deshabilita la creación automática de un índice en el campo _id. Es de tipo booleano.
- size: Especifica el tamaño máximo de la colección en bytes. Es de tipo numérico.
- max: Especifica el número máximo de documentos permitidos en la colección limitada. Es de tipo numérico.
- storageEngine: solo está disponible para el motor de almacenamiento WiredTiger. Es del tipo documento.
- validador: Especifica las reglas de validación para la colección. Es del tipo documento.
- nivel de validación: ilustra cuán estrictamente MongoDB aplica la regla de validación en el documento existente durante las actualizaciones. Es de tipo picadura.
- ValidaciónAcción: ilustra si hay un error en los documentos no válidos o simplemente advierte sobre las infracciones, pero permite que se inserten documentos no válidos. Es de tipo string.
- indexOptionDefaults: permite al usuario especificar la configuración predeterminada para los índices al crear una colección. Es de tipo documento.
- viewOn: nombre de la colección de origen o vista desde la que crear la vista. Es de tipo string.
- tubería: es una array que contiene las etapas de la tubería de agregación. O usando este parámetro, podemos aplicar la canalización a la vista o la colección viewOne. Es de tipo array.
- intercalación: especifica la intercalación predeterminada de la colección dada. Es del tipo documento.
- writeConcern: Expresa la preocupación de escritura de la operación. Si desea utilizar la preocupación de escritura predeterminada, evite este parámetro. Es de tipo documento.
Ejemplos:
En el siguiente ejemplo, estamos trabajando con la base de datos «gfg» en la que estamos creando una nueva colección limitada de nombre «estudiante» con una capacidad máxima de documentos «4» utilizando el método createCollection().
db.createCollection("student", {capped:true, size:10000, max:4})
Ahora insertamos los documentos en la colección de estudiantes:
Después de insertar documentos, mostraremos todos los documentos presentes en la colección de estudiantes usando el método find().
Ahora, si intentamos insertar un documento más, anulará el documento existente. En el ejemplo, estamos insertando un nuevo documento con el nombre Akash que anula el documento existente con el nombre Mihir:
Después de insertar uno o más documentos:
¿Cómo verificar si la colección está limitada o no?
Podemos verificar si la colección está limitada o no con el método isCapped() en MongoDB. Este método devuelve verdadero es la colección limitada de colecciones especificadas. De lo contrario, devuelve, falso.
Sintaxis:
db.Collection_name.isCapped()
Ejemplo:
db.student.isCapped()
Después de convertir la colección de estudiantes en un tope:
¿Cómo convertir una colección a un tope?
Si hay una colección existente que queremos cambiarla a tapada, podemos hacerlo usando el comando convertToCapped . Cambia la colección actual a una colección limitada:
Sintaxis:
{
convertToCapped: <colección>,
tamaño: <tamaño limitado>,
escribirPreocupación: <documento>,
comentario: <cualquiera>
}
Ejemplo:
db.runCommand({"convertToCapped":"student",size:5000})
Antes de convertir a tapado:
Después de convertir a tapado:
Ventajas de las colecciones limitadas
- Para devolver documentos en orden de inserción, las consultas no necesitan un índice, ya que proporciona un mayor rendimiento de inserción.
- Las colecciones limitadas permiten cambios que coinciden con el tamaño del documento original para garantizar que el documento no cambie su posición en el disco.
- Mantener archivos de registro es útil.
Desventajas de las colecciones limitadas
- La operación de actualización falla si la actualización de un documento excede el tamaño original de la colección.
- No es posible eliminar documentos de una colección limitada. Si desea eliminar todos los registros de una colección limitada, use el comando dado:
{ emptycapped: Collection_name }
- La colección limitada no puede ser fragmentada.
Publicación traducida automáticamente
Artículo escrito por KapilChhipa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA