mongodb 2.2부터 expire 옵션을 쓸 수 있게 되었다.
그래서 일정시간이 지난 후 도큐먼트를 자동으로 삭제할 수 있다.
예를 들어, 네트워크트래픽을 수집해서 시스템을 만들었는데 트래픽데이터를 최근 6개월치만 유지하고 싶을 때
오래된 도큐먼트를 지우는 작업을 따로 하지 않아도 된다.
공식메뉴얼 : http://docs.mongodb.org/manual/tutorial/expire-data/#expire-documents-after-a-certain-number-of-seconds
2가지 방법이 있다.
1. 도큐먼트가 생성된 시각부터 지정된 시간(초)가 지난 후 삭제.
2. 언제 삭제할 지 특정 시각을 도큐먼트에 지정.
지정된 시간이 지난 후 삭제하는 방법을 알아보자.
인덱스를 아래처럼 생성한다.
db.log.events.ensureIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )
createdAt 칼럼은 도큐먼트에 들어갈 항목이다.
expireAfterSeconds에서는 도큐먼트가 생성된 후 얼마 지난 후 삭제할 것인지 초단위로 지정한다.
이제 도큐먼트를 생성할 때 createdAt 필드를 추가하면 된다.
db.log.events.insert( { "createdAt": new Date(), "logEvent": 2, "logMessage": "Success!"} )
createdAt필드에 지금시각을 지정해주면 된다.
python에서 pymongo를 이용하여 도큐먼트를 생성하는 방법은 아래와 같다.
import datetime doc['createdAt'] = datetime.datetime.utcnow()