sql >> Base de Datos >  >> NoSQL >> MongoDB

Los documentos de colección de MongoDB caducan automáticamente

Uno de los escenarios comunes al trabajar con una base de datos es eliminar automáticamente algunas tablas en función del tiempo. Por ejemplo, puede tener una tabla de trabajos para realizar un seguimiento de los trabajos en segundo plano en su producto y solo desea conservar los trabajos durante la última hora. La forma en que se implementa normalmente es que terminas escribiendo un proceso daemon que se ejecuta periódicamente y recolecta basura de tus tablas. Dado que este es un proceso tan común, la gente de MongoDB ha incorporado esta funcionalidad en la base de datos que se puede aprovechar en sus implementaciones de MongoDB. Se llama "índices TTL". Así es como puede usar los índices TTL en dos simples pasos:

  1. Paso 1:Agregar un campo de fecha

    Agregue un campo de fecha a su documento para indicar la antigüedad del documento. MongoDB utilizará este campo para determinar si su documento ha caducado y debe eliminarse. Si desea mantener el documento por más tiempo, simplemente actualice este documento con una fecha actualizada. En el siguiente ejemplo, agregué un campo "hora de creación" a mi colección de trabajos:

    db.jobs.insert( {
       "name" : testjob
       "creationTime": new Date('Oct 30, 2013: 11:00:00'),
       "type": 2,
    } )
  2. Paso 2:Agregar un índice TTL

    Agregue un índice TTL a su colección en este campo. En este ejemplo a continuación, usaremos un valor expireAfterSeconds de 3600. Esto caducará los trabajos después de cada hora:

    db.jobs.ensureIndex( { "creationTime": 1 }, { expireAfterSeconds: 3600 } )

    El demonio TTL se ejecuta cada 60 segundos, por lo que su documento se eliminará aproximadamente 60 segundos después de la expiración. Otra ventaja de los índices TTL es que también se comportan como índices normales, por lo que puede consultar en el campo de fecha y el plan de consulta utilizará el índice. Para obtener más detalles, consulte la documentación de MongoDB sobre índices TTL.