저는 이것을 위해 몽구스를 사용하고 있습니다.Mongodb (몽구스 사용) expiresAfterSeconds (TTL)가 작동하지 않는 것 같습니다.
내 스키마는 다음과 같이이다 :
> 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
}
내가 어떻게되는지 오랫동안 테스트하지 않았습니다 :
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의 쉘에서 실행이 내가 문제를 생각하는 정보입니다 삭제되지 않고 문서 상태가 단지 1 분의 오버 헤드 만 있으면 예상 할 수있는 상태 여야하지만 문서가 120 초 동안 지속되어야하는 경우 15 분이 넘지 않아야합니다.
나는 이것을 어떻게 처리해야할지 확신하지 못합니다. 도움말 크게 :) 이해할 수있을 것이다
는편집 : 몽구스의 버전 나는이 기능을 테스트 한 3.0.3
mongod 로그를보세요. 매분마다 TTL 모니터를 볼 수 있습니까? –
btw, 로그에있는 동안 서버에있는 시간을 기록하십시오. - 새 Date()는 서버 시간이 아닌 쉘 호스트 시간을 제공합니다. 서버에서 이전 버전 일 수 있습니다. –
TTL 모니터가 실행되고 있다는 증거는 발견되지 않았습니다. mongodb.conf 파일에서 어디에이 구성을 지정해야하는지 확신 할 수 없습니다. 명시 적으로 필요하다고 표시해야 할 경우를 대비해 현재의 conf 파일이이를 나타내지 않는다는 것을 알고 있습니다 ... 나는 TTLMonitor 스레드가 자동으로 실행을 시작합니다. 또한 답변 해 주셔서 감사합니다. – Mamsaac