2016-09-29 2 views
4

나는 몽고가 성공하지 못한 채 TTL 기능을 가진 문서를 제거하려고 노력하고 있습니다. 많은 것들을 시도했지만 mongo는 정리하지 않는 것 같습니다.몽고 TTL 클린업이 작동하지 않습니다

내 인덱스 : 문서의

{ 
    "v" : 1, 
    "key" : { 
     "date" : 1 
    }, 
    "name" : "date_1", 
    "ns" : "history.history", 
    "expireAfterSeconds" : 60 
} 

날짜 값 :

 "date" : "2016-09-29 11:08:46.461207", 

db.serverStatus의 출력() metrics.ttl :. dB에서

{ "deletedDocuments" : NumberLong(0), "passes" : NumberLong(29) } 

시간 출력 .serverStatus() :

"localTime" : ISODate("2016-09-29T11:19:45.345Z") 

파이썬에서 값을 삽입하는 방법은 내가 의심하는 것입니다. 그것이 어떤 식 으로든 잘못되었을 수 있습니다. 다음 요소가 포함 된 JSON 문서가 있습니다.

"date": str(datetime.utcnow()), 

문제가있는 모든 단서가 있습니까?

감사합니다, 제니스

답변

2

당신이 짐작했듯이, 문제는 당신이 날짜 값을 삽입하는 방법입니다. 문서의 인덱스 필드가 날짜 또는 는 날짜 값 (들), 문서가 만료되지 않습니다 보관 유지하는 배열이 아닌 경우

: 나는 docs을 인용하겠습니다.

날짜를 문자열로 변환합니다. pymongo 드라이버를 사용하는 경우, 그는 멋지게 datetimes를 처리하고 그것을 MongoDB 네이티브 Date type으로 변환 할 것입니다.

이 방법은, 다음과 같은 작업을해야합니다 : 팁을위한

"date": datetime.utcnow() 
+0

감사합니다. 그것을 시도하고 예외를 얻으십시오 : datetime.datetime (2016, 9, 30, 6, 33, 2, 771754)은 JSON을 직렬화 할 수 없습니다. 나는 json.dumps()를 미리 준비된 JSON 문서에서 실행하고 있기 때문에 추측한다. –

+0

@JanisJansons pymongo는 파이썬 사전과 목록 및 대부분의 유형을 올바르게 처리하므로 json.dumps()를 사용할 필요가 없습니다. 덕분에 – joao

+0

. 얼마나 저 어리석은 짓을하고 있나;) 코드를 제거하고 모두 좋다. 예상대로 정리 작업을 볼 수있다. 모두에게 감사드립니다. –