Et af de almindelige scenarier i at arbejde med en database er automatisk at beskære nogle tabeller baseret på tid. For eksempel kan du have en jobtabel til at spore baggrundsjob i dit produkt, og du vil kun beholde jobs i den sidste time. Hvordan det typisk implementeres er, at du ender med at skrive en dæmonproces, der kører med jævne mellemrum og skrald-samler dine tabeller. Da dette er så almindelig en proces, har folk hos MongoDB indbygget denne funktionalitet i databasen, som kan udnyttes i dine MongoDB-implementeringer! Det kaldes "TTL-indekser". Sådan kan du bruge TTL-indekser i to enkle trin:
-
Trin 1:Tilføj et datofelt
Tilføj et datofelt til dit dokument for at angive dokumentets alder. MongoDB vil bruge dette felt til at afgøre, om dit dokument er udløbet og skal fjernes. Hvis du ønsker at beholde dokumentet længere, skal du blot opdatere dette dokument med en opdateret dato. I eksemplet nedenfor har jeg tilføjet et "creationTime"-felt til min jobsamling:
db.jobs.insert( { "name" : testjob "creationTime": new Date('Oct 30, 2013: 11:00:00'), "type": 2, } )
-
Trin 2:Tilføj et TTL-indeks
Tilføj et TTL-indeks til din samling i dette felt. I dette eksempel nedenfor bruger vi en expireAfterSeconds-værdi på 3600. Dette vil udløbe jobs efter hver time:
db.jobs.ensureIndex( { "creationTime": 1 }, { expireAfterSeconds: 3600 } )
TTL-dæmonen kører hvert 60. sekund, så dit dokument bliver slettet inden for cirka 60 sekunder efter udløb. En anden fordel ved TTL-indekser er, at de også opfører sig som normale indekser - så du kan forespørge på datofeltet, og forespørgselsplanen vil bruge indekset. For flere detaljer henvises til MongoDB-dokumentationen om TTL-indekser.