Een van de meest voorkomende scenario's bij het werken met een database is het automatisch opschonen van sommige tabellen op basis van tijd. U hebt bijvoorbeeld een takentabel om achtergrondtaken in uw product bij te houden en u wilt alleen taken van het laatste uur behouden. Hoe het meestal wordt geïmplementeerd, is dat u uiteindelijk een daemon-proces schrijft dat periodiek wordt uitgevoerd en uw tabellen opruimt. Aangezien dit zo'n algemeen proces is, hebben de mensen van MongoDB deze functionaliteit in de database ingebouwd die kan worden gebruikt in uw MongoDB-implementaties! Het wordt "TTL-indexen" genoemd. Hier leest u hoe u TTL-indexen in twee eenvoudige stappen kunt gebruiken:
-
Stap 1:Voeg een datumveld toe
Voeg een datumveld toe aan uw document om de ouderdom van het document aan te geven. MongoDB gebruikt dit veld om te bepalen of uw document is verlopen en moet worden verwijderd. Als u het document langer wilt bewaren, werkt u dit document gewoon bij met een bijgewerkte datum. In het onderstaande voorbeeld heb ik een veld "creationTime" toegevoegd aan mijn banenverzameling:
db.jobs.insert( { "name" : testjob "creationTime": new Date('Oct 30, 2013: 11:00:00'), "type": 2, } )
-
Stap 2:Een TTL-index toevoegen
Voeg in dit veld een TTL-index toe aan uw verzameling. In dit voorbeeld hieronder gebruiken we een expiratieAfterSeconds-waarde van 3600. Hierdoor verlopen taken na elk uur:
db.jobs.ensureIndex( { "creationTime": 1 }, { expireAfterSeconds: 3600 } )
De TTL-daemon wordt elke 60 seconden uitgevoerd, dus uw document wordt binnen ongeveer 60 seconden na de vervaldatum verwijderd. Een ander voordeel van TTL-indexen is dat ze zich ook gedragen als normale indexen - u kunt dus query's uitvoeren op het datumveld en het queryplan gebruikt de index. Raadpleeg de MongoDB-documentatie over TTL-indexen voor meer informatie.