MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Expiration automatique des documents de collection MongoDB

L'un des scénarios courants dans l'utilisation d'une base de données consiste à élaguer automatiquement certaines tables en fonction du temps. Par exemple, vous pouvez avoir une table des travaux pour suivre les travaux d'arrière-plan dans votre produit et vous souhaitez uniquement conserver les travaux de la dernière heure. La façon dont il est généralement implémenté est que vous finissez par écrire un processus démon qui s'exécute périodiquement et récupère vos tables. Étant donné qu'il s'agit d'un processus si courant, les gens de MongoDB ont intégré cette fonctionnalité dans la base de données qui peut être exploitée dans vos déploiements MongoDB ! C'est ce qu'on appelle les "indices TTL". Voici comment utiliser les index TTL en deux étapes simples :

  1. Étape 1 :Ajouter un champ de date

    Ajoutez un champ de date à votre document pour indiquer l'âge du document. MongoDB utilisera ce champ pour déterminer si votre document a expiré et doit être supprimé. Si vous souhaitez conserver le document plus longtemps, mettez simplement à jour ce document avec une date mise à jour. Dans l'exemple ci-dessous, j'ai ajouté un champ "creationTime" à ma collection d'emplois :

    db.jobs.insert( {
       "name" : testjob
       "creationTime": new Date('Oct 30, 2013: 11:00:00'),
       "type": 2,
    } )
  2. Étape 2 :Ajouter un index TTL

    Ajoutez un index TTL à votre collection sur ce champ. Dans cet exemple ci-dessous, nous utiliserons une valeur expireAfterSeconds de 3600. Cela fera expirer les travaux toutes les heures :

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

    Le démon TTL s'exécute toutes les 60 secondes. Votre document sera donc supprimé dans les 60 secondes environ suivant son expiration. Un autre avantage des index TTL est qu'ils se comportent également comme des index normaux - vous pouvez donc interroger sur le champ de date et le plan de requête utilisera l'index. Pour plus de détails, consultez la documentation MongoDB sur les index TTL.