我爲此使用貓鼬。Mongodb(使用貓鼬)expiresAfterSeconds(TTL)似乎並沒有工作
我的模式是這樣的:
var UsuarioSchema = new Schema({
email : { type : Email, index : { unique : true}, required : true },
//some other fields, but not required, hopefully, for this sample code
test_expira : { type : Date, default : Date.now, index : { expires : 120 }}
});
當MongoDB的shell中運行,這是我相信事項的資料:
> db.usuarios.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "dbnamehere.usuarios",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"email" : 1
},
"unique" : true,
"ns" : "dbnamehere.usuarios",
"name" : "email_1",
"background" : true,
"safe" : true
},
{
"v" : 1,
"key" : {
"test_expira" : 1
},
"ns" : "dbnamehere.usuarios",
"name" : "test_expira_1",
"expiresAfterSeconds" : 120,
"background" : true,
"safe" : true
}
]
> new Date();
ISODate("2013-06-12T17:41:43.263Z")
> db.usuarios.findOne({email : '[email protected]'});
{
/* some fields go in here! */
"email" : "[email protected]",
/* some more fields go in here */
"_id" : ObjectId("51b8b087de01a2ec28000002"),
"test_expira" : ISODate("2013-06-12T17:31:51.156Z"),
/* some yet more fields go in here */
"__v" : 0
}
我沒有爲它去多長時間測試而不會被刪除,但即使是文檔狀態,只需要一分鐘的開銷就可以達到預期的效果,但對於只能持續120秒的文檔,15分鐘不會超過15分鐘。
我不確定如何處理此問題。幫助將不勝感激:)
編輯: 正在使用的版本的MongoDB是v2.4.4 貓鼬的版本是3.0.3
看在mongod日誌 - 你看TTLMonitor線程每分鐘運行嗎? –
順便說一句,當你在日誌中,請記下它在服務器上的時間 - 新的Date()爲您提供了shell主機時間,而不是服務器時間。它可能早於您的服務器。 –
我發現TTLMonitor沒有運行的證據。我不確定在mongodb.conf中的哪個位置我應該指定此配置,以防我必須明確指出它是必需的,我知道我當前的配置文件沒有指出它......我認爲只需通過添加索引TTLMonitor線程會自動開始運行。另外,感謝您的迴應! – Mamsaac