我为此使用猫鼬。
我的架构是这样的:
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 : 'someemail@gmail.com'});
{
/* some fields go in here! */
"email" : "someemail@gmail.com",
/* 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 分钟。
我不确定如何处理这个问题。帮助将不胜感激:)
编辑:正在使用的 mongodb 版本是 v2.4.4 mongoose 版本是 3.0.3