2014-09-26 53 views
0

我使用mongojs與我的應用程序中的mongodb進行交互。mongodb TTL不能用於收集財產 - mongojs

我需要爲集合添加TTL支持,使文檔每小時自行刪除。 這裏是我如何在應用程序啓動創建索引:保存文檔時

db.collection.ensureIndex({'createdAt': 1, expireAfterSeconds: 3600}) 

createdAt場inited爲new Date()

這裏的文檔的結構看起來如何在數據庫:

{ 
"_id" : ObjectId("5425759f73070ab82f6097ca"), 
"user" : "bde8349VIO2RpmhE9Rkn3qvQJDYkr589MeWdsopEteQ3OfxQVPxUhLWH0AMiwnypKhquNEG4eA==", 
"tags" : [], 
"createdAt" : ISODate("2014-09-26T14:18:07.041Z") 
} 

我檢查內部數據庫索引和他們看起來不錯:

> db.collection.getIndexes() 
[ 
{ 
    "v" : 1, 
    "key" : { 
     "_id" : 1 
    }, 
    "name" : "_id_", 
    "ns" : "dbname.collection" 
}, 
{ 
    "v" : 1, 
    "key" : { 
     "createdAt" : 1, 
     "expireAfterSeconds" : 3600 
    }, 
    "name" : "createdAt_1_expireAfterSeconds_3600", 
    "ns" : "dbname.collection" 
} 
] 

但所有文件留在裏面db和不會被刪除。 。 有任何想法嗎?

謝謝!

+0

你能得到索引引用的文件嗎? – 2014-09-26 14:33:25

+0

@FranciscoCorralesMorales你是什麼意思? – Kosmetika 2014-09-26 14:36:05

回答

2

它應該是db.collection.ensureIndex({'createdAt': 1}, {expireAfterSeconds: 3600})而不是db.collection.ensureIndex({'createdAt': 1, expireAfterSeconds: 3600})

+0

對於那些暫停幾秒鐘試圖發現兩個語句之間的區別的人,區別在於第一個通過將'expireAfterSeconds'指定爲第二個索引創建選項來正確構建。 – 2017-09-29 23:47:49