2017-04-23 25 views
0

我在mongoDB中創建了一個集合,我爲其創建了字段「expireAt」的索引,這是一個日期時間並將expireAfterSeconds屬性設置爲0. 正如我想要在文檔中設置TTL級別不在收集級別。 正如我所知在redis我可以得到特定的鑰匙的其餘TTL 只是有問題可能在mongoDB?在那裏我可以得到給定文件的剩餘時間到期。如何獲取mongo的剩餘TTL文檔

我已經在谷歌搜索它,但沒有找到任何相關信息。

謝謝

回答

-1

試試這個

db.hellos.createIndex({ "expireAt": 1 }, { expireAfterSeconds: 3600 }) 

更多here

+0

我想讓ttl留給給定的文檔。 你給出的命令只是在mongo集合的特定字段上創建了TTL。 –

+0

我認爲這個文檔[這裏](http://hassansin.github.io/working-with-mongodb-ttl-index)可以幫助你更多。 –

+0

您好,我希望通過文檔,但沒有功能獲取文檔的其餘ttl。 我想我將不得不取得過期的數據並按照我的要求執行操作。 –

1

如果設置了TTL expireAfterSeconds值爲0的每個文檔到期,剩餘時間將是之間的區別當前時間和文檔中的TTL日期字段(例如,expireAt)。沒有特定的服務器函數來查詢它,但是您可以在您的應用程序中計算它,或者使用MongoDB的聚合框架。

實施例使用mongo殼返回收到的文件有資格在接下來的TTL通待去除留(毫秒)的時間:

db.mycoll.aggregate(
    { $project: { 
     expireAt: 1, 
     ttlMillis: { 
      $subtract: [ "$expireAt", new Date() ] 
     } 
    }} 
) 

注:TTL後臺線程運行每60秒,使文件可能會持續一分鐘或更長時間超過其名義期限。