2012-09-10 2 views
8

날짜 유형 인덱스에 expireAfterSeconds 속성이 설정된 mongodb에 문서 모음이 있습니다.mongodb 문서가 업데이트 된 후 언제 만료됩니까?

인수를 위해 문서는 한 시간 후에 만료되도록 설정됩니다.

이 컬렉션의 문서를 업데이트 할 때 다음 중 어떤 현상이 발생합니까?

a) 문서는 원래 생성 시간 1 시간 후에 만료된다.

b)업데이트 시간이 지나면 문서의 유효 기간이 만료됩니다.

C) 문서는 인덱스 변수의 시간 후 1 시간 만료, 그 무엇이든간에. 위의

D) 없음 나는 C을하지만 그것을 확인 참조를 찾을 수 있다고 생각하지 않습니다. 나 맞아? 이 문서는 어디에 문서화되어 있습니까?

[편집] : 명확한 설명을 위해 암호 재설정 코드 (만료되어야 함)가 저장되어있어 새로운 코드를 요청하면 이전 코드가 작동하지 않게해야합니다. 그다지 관련성이 없습니다. 이전 트랜잭션을 삭제하면 원하는 동작을 항상 존중할 수 있습니다. 이 질문은 나의 현재의 문제가 아니라 몽고의 행동에 관한 것이다. 이 날짜 필드의 내용이 제거 항목을 선택하는 데 사용되기 때문에

+0

현재 동작을 테스트하고 있습니다. – brice

+1

제거 작업 기간은 실행중인 mongod 인스턴스의 작업 부하에 따라 달라집니다. 사용자가 가지고있는 상황을 자세히 설명해 주시겠습니까 –

+1

업데이트 된 답변보기. 내 현재의 상황은 무의미하다. 제거에 시간이 걸리므로 정확한 순간은 하중에 따라 다릅니다. – brice

답변

15

정답은, C)

expireAfterSeconds 속성은 항상 BSON 날짜를 포함하는 필드에 인덱스를 필요로합니다.

문서의 업데이트로 인해 유효 기간을 다시 설정하려면 인덱싱 된 날짜 필드도 현재 시간으로 업데이트하십시오.

업데이트가 TTL에 영향을 미치지 않도록하려면 날짜를 업데이트하지 마십시오.

그러나 expireAfterSeconds는 문서의 즉시 삭제를 보장하지 않는다는 점에 유의하십시오. 삭제 작업은 매 분마다 실행되는 백그라운드 작업으로 수행됩니다. 이 작업은 우선 순위가 낮으며 현재로드가 높을 때 MongoDB가 연기 할 수 있습니다. 따라서 만료 시간이 두 번째 시간과 정확하게 일치해야하는 경우에는 응용 프로그램 수준에서 추가 검사를 추가해야합니다.

이 기능은 여기에 설명되어 있습니다 : 당신이 컬렉션을 만료하기위한 몽고 악마 과정에 의존하지 않으려면 http://docs.mongodb.org/manual/tutorial/expire-data/

+0

감사합니다. 그것은 내가 생각한 것입니다, 나는이 문서가 실제로 이것에 대해 명백하게 보이지는 않는다는 것을 알았습니다. – brice

+0

위대한 답변 - 완전하고 간결합니다. – Ross

0

이 더 좋은 컬렉션 추가 createdOn 필드를 만들고 현재의 타임 스탬프와 비교하기 해당 문서의 사용 여부를 결정하십시오.

+0

이것은 MongoDB가 작동하는 방식과 관련이 없으며 (원래 질문의 범위를 벗어나는) 외부 처리가 필요합니다. –