我想完成一項特定的任務,但我沒有找到任何特定的方法來完成此任務。 可以說我有一個用來發送郵件的應用程序。我將這封郵件的記錄保存在mongo的一個集合中。使用這個應用程序,我現在可以發送郵件,也可以安排郵件以備將來使用。 在收集文件的結構是這樣的:在mongo中創建一個有條件的TTL
{
'_id' : 123456789,
'to_email' : '[email protected]'
'from_email' : '[email protected]'
'subject': 'some subject'
'type' : '<1 if normal and 2 if scheduled>',
'createdDate' '<date when mail was sent or the request was created>',
'scheduledDate' : '<time for which mail is scheduled>'
.. and many more key-value pairs
}
的scheduledDate場可以是零或任何日期,這取決於其是否如期與否。 我不想保留超過2天的數據,所以我在'createdDate'上創建了2天的TTL索引。 但我也不想刪除預定未來的行或請求。 我正在尋找某種有條件的TTL,但無法找到任何此類解決方案。
有什麼可用的像條件TTL或任何其他方式在MongoDB中做到這一點。
我要製作的工作就像一個TTL:
if(requestType!=2 and createdDate < -2days)
delete row;
或者是有辦法,我可以用任何語言來某些文件的變化,使他們不得到過期。
編輯:我解決了這個問題,通過使用scheduledDate和requestDate在計劃郵件的情況下相同的值。
因此,您需要添加索引,以便像這樣過期[(文檔)](https://docs.mongodb.com/manual/tutorial/expire-data/#expire-documents-at-a-specific-clock-time)? 'db.emails.createIndex({「expires」:1},{expireAfterSeconds:0})' – luckydonald
對我來說這看起來是正確的:在你的情況下,當前日期是'expires'的值時,文檔將被刪除領域(給或需要一分鐘)。 – RikkusRukkus