2014-09-26 5 views
0

mongojs 내 응용 프로그램에서 mongodb와 상호 작용하는 데 사용하고 있습니다.mongodb TTL 컬렉션 속성에서 작동하지 않습니다 - mongojs

문서를 매 시간 삭제하도록 컬렉션에 TTL 지원을 추가해야합니다. 는 여기에 내가 응용 프로그램 시작에 인덱스를 만드는거야 방법 : 문서를 저장할 때

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

createdAt 필드가 new Date()로 inited는있다.

여기 문서 '구조가 데이터베이스에 보이는 방법은 다음과 같습니다

{ 
"_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

색인에서 참조하는 문서를 얻을 수 있습니까? –

+0

@FranciscoCorralesMorales 당신은 무엇을 의미합니까? – Kosmetika

답변

2

db.collection.ensureIndex({'createdAt': 1}, {expireAfterSeconds: 3600})이어야하지만 db.collection.ensureIndex({'createdAt': 1, expireAfterSeconds: 3600})이 아야합니다.

+0

두 문장의 차이점을 찾아내는 데 몇 초간 멈추었 던 사람들에게는 'expireAfterSeconds'를 두 번째 색인 생성 옵션으로 지정하여 첫 번째 문장을 올바르게 작성해야한다는 차이점이 있습니다. –

관련 문제