MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Automatycznie przedawniaj dokumenty kolekcji MongoDB

Jednym z typowych scenariuszy pracy z bazą danych jest automatyczne przycinanie niektórych tabel na podstawie czasu. Na przykład możesz mieć tabelę zadań do śledzenia zadań w tle w swoim produkcie i chcesz zachować zadania tylko z ostatniej godziny. Sposób, w jaki jest to zwykle zaimplementowany, polega na tym, że kończysz na pisaniu procesu demona, który działa okresowo i zbiera śmieci w twoich tabelach. Biorąc pod uwagę, że jest to tak powszechny proces, ludzie z MongoDB wbudowali tę funkcję w bazę danych, którą można wykorzystać we wdrożeniach MongoDB! Nazywa się to „indeksami TTL”. Oto jak możesz używać indeksów TTL w dwóch prostych krokach:

  1. Krok 1:Dodaj pole daty

    Dodaj do dokumentu pole daty, aby wskazać wiek dokumentu. MongoDB użyje tego pola, aby określić, czy Twój dokument wygasł i należy go usunąć. Jeśli chcesz zachować dokument dłużej, po prostu zaktualizuj ten dokument o zaktualizowaną datę. W poniższym przykładzie dodałem pole „Czas tworzenia” do mojej kolekcji zadań:

    db.jobs.insert( {
       "name" : testjob
       "creationTime": new Date('Oct 30, 2013: 11:00:00'),
       "type": 2,
    } )
  2. Krok 2:Dodaj indeks TTL

    Dodaj indeks TTL do swojej kolekcji w tym polu. W poniższym przykładzie użyjemy wartości exitAfterSeconds wynoszącej 3600. Spowoduje to wygaśnięcie zadań po każdej godzinie:

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

    Demon TTL jest uruchamiany co 60 sekund, więc dokument zostanie usunięty w ciągu około 60 sekund od wygaśnięcia. Kolejną zaletą indeksów TTL jest to, że zachowują się one również jak normalne indeksy – możesz więc zapytać o pole daty, a plan zapytań użyje indeksu. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją MongoDB na temat indeksów TTL.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak policzyć liczbę dokumentów w kolekcji mongodb

  2. Pola wynikowe Mongoose/MongoDB są wyświetlane jako niezdefiniowane w JavaScript

  3. O MongoDB, dlaczego go używamy? Terminologia i implementacja MongoDB

  4. Jak skonfigurować klaster MongoDB obsługujący sesje?

  5. Jak używać wiosennych danych mongo @CompoundIndex z podkolekcjami?