sql >> Databáze >  >> NoSQL >> MongoDB

Automaticky stárnou dokumenty sbírky MongoDB

Jedním z běžných scénářů při práci s databází je automatické ořezávání některých tabulek na základě času. Můžete mít například tabulku úloh ke sledování úloh na pozadí ve vašem produktu a chcete úlohy ponechat pouze na poslední hodinu. Obvykle se to implementuje tak, že nakonec napíšete proces démona, který se pravidelně spouští a shromažďuje vaše tabulky. Vzhledem k tomu, že se jedná o tak běžný proces, lidé z MongoDB zabudovali tuto funkci do databáze, kterou lze využít ve vašich nasazeních MongoDB! Říká se tomu „indexy TTL“. Zde je návod, jak můžete použít indexy TTL ve dvou jednoduchých krocích:

  1. Krok 1:Přidejte datové pole

    Přidejte do dokumentu pole data označující stáří dokumentu. MongoDB použije toto pole k určení, zda vypršela platnost vašeho dokumentu a je třeba jej odstranit. Pokud si přejete uchovat dokument déle, aktualizujte tento dokument s aktualizovaným datem. V níže uvedeném příkladu jsem do své sbírky úloh přidal pole „creationTime“:

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

    Přidejte index TTL do své sbírky v tomto poli. V tomto příkladu níže použijeme hodnotu expireAfterSeconds 3600. Platnost úloh vyprší po každé hodině:

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

    Démon TTL se spouští každých 60 sekund, takže váš dokument bude smazán přibližně do 60 sekund po vypršení platnosti. Další výhodou indexů TTL je, že se také chovají jako normální indexy – můžete se tedy dotazovat na pole data a plán dotazů použije index. Další podrobnosti najdete v dokumentaci MongoDB o indexech TTL.


  1. python-rq worker se automaticky zavře

  2. Indexování pomocí seřazených sad Redis

  3. Jaká je výhoda použití ObjectId namísto prostého řetězce?

  4. Mongodb Healthcheck krok za krokem