2017-04-23 2 views
0

mongoDB에서 하나의 컬렉션을 만들었습니다.이 필드는 "expireAt"라는 필드에 대해 인덱스를 만들었고 expireAfterSeconds 속성을 0으로 설정했습니다. 문서에서 TTL을 설정하려고합니다. 수집 수준이 아닌 수준. 나는 redis에서 특정 키에 대한 나머지 TTL을 얻을 수 있음을 알고있다. mongoDB에서 질문이 가능한가? 주어진 문서에 대해 남은 시간이 만료 될 수 있습니다.mongo 문서의 남은 TTL을 얻는 방법

Google에서 검색했지만 관련 정보를 찾지 못했습니다.

당신은

답변

-1

db.hellos.createIndex({ "expireAt": 1 }, { expireAfterSeconds: 3600 }) 

읽기 시도 감사 더 here

+0

주어진 문서에 대해 ttl을 남기고 싶습니다. mongo collection의 특정 필드에 TTL이 생성되었습니다. –

+0

이 문서 [여기] (http://hassansin.github.io/working-with-mongodb-ttl-index)가 도움이 될 것이라고 생각합니다. –

+0

안녕 나는 문서를 통해 원하지만 문서의 나머지 ttl을 얻는 기능이 없었다. 필자는 만료 된 데이터를 가져와 내 요구 사항에 따라 작업을 수행해야한다고 생각합니다. –

1

당신이 당 문서 만료 0으로 TTL expireAfterSeconds 값을 설정하면 나머지 시간은 차이가있을 것입니다 현재 시간 및 TTL 날짜 필드 (예 : expireAt)를 문서에 저장하십시오. 이 함수를 쿼리하는 특정 서버 함수가 없지만 앱에서 이것을 계산하거나 MongoDB의 집계 프레임 워크를 사용할 수 있습니다.

예 문서는 다음 TTL 패스에서 제거 될 자격이되기 전에 (밀리 초) 남은 시간 돌아갑니다 mongo 쉘을 사용 :

db.mycoll.aggregate(
    { $project: { 
     expireAt: 1, 
     ttlMillis: { 
      $subtract: [ "$expireAt", new Date() ] 
     } 
    }} 
) 

가 참고 : TTL 배경 스레드는 60 초마다 실행을, 그래서 문서는 명목상의 유효 기간이 1 분 이상 지속될 수 있습니다.

관련 문제