MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Автоматично остарявайте документите за колекция MongoDB

Един от често срещаните сценарии при работа с база данни е автоматичното изрязване на някои таблици въз основа на времето. Например, може да имате таблица със работни места за проследяване на фонови задачи във вашия продукт и искате да запазите работни места само за последния час. Начинът, по който обикновено се прилага, е, че в крайна сметка пишете процес на демон, който се изпълнява периодично и събира вашите таблици за боклук. Като се има предвид, че това е толкова често срещан процес, хората в MongoDB са вградили тази функционалност в базата данни, която може да бъде използвана във вашите внедрявания на MongoDB! Нарича се „TTL индекси“. Ето как можете да използвате TTL индекси в две прости стъпки:

  1. Стъпка 1:Добавете поле за дата

    Добавете поле за дата към вашия документ, за да посочите възрастта на документа. MongoDB ще използва това поле, за да определи дали вашият документ е изтекъл и трябва да бъде премахнат. Ако искате да запазите документа по-дълго, просто актуализирайте този документ с актуализирана дата. В примера по-долу добавих поле „creationTime“ към колекцията си от работни места:

    db.jobs.insert( {
       "name" : testjob
       "creationTime": new Date('Oct 30, 2013: 11:00:00'),
       "type": 2,
    } )
  2. Стъпка 2:Добавете TTL индекс

    Добавете TTL индекс към вашата колекция в това поле. В този пример по-долу ще използваме стойност expireAfterSeconds от 3600. Това ще изтече работните места след всеки час:

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

    Демонът TTL се изпълнява на всеки 60 секунди, така че документът ви ще бъде изтрит в рамките на приблизително 60 секунди след изтичане. Друго предимство на TTL индексите е, че те също се държат като нормални индекси – така че можете да правите заявка в полето за дата и планът на заявката ще използва индекса. За повече подробности вижте документацията на MongoDB за TTL индексите.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Aggregate $lookup не връща оригиналния ред на масива

  2. Как мога да запиша няколко документа едновременно в Mongoose/Node.js?

  3. Как да конвертирате casbah mongodb list в json в scala / play

  4. Автоматизирана проверка на състоянието на базата данни

  5. MongoDB на машина с Windows 7:Не може да се осъществи връзка