mongodb expire data
로그인 처리를 위해서 특정 시간동안 데이터를 저장할 필요가 생겼다.
기존에 사용경험이 있었던 Redis를 이용할지를 고민하던 중에, 혹시 요즘 많이 쓰고 있는 Mongodb에도 혹시 특정 시간동안만 저장하는 기능이 있을까 해서 찾아보았다.
검색 키워드로는 “mongodb expire data”를 이용했고 바로 첫번째로 검색 되었다.
사용방법은 인덱스를 생성할때 날짜 필드에 expireAfterSeconds 를 추가하면된다.
# 1시간뒤에 삭제되는 데이터 구조 생성
db.log_events.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } );
# 사용법
db.log_events.insert( {
"createdAt": new Date(),
"logEvent": 2,
"logMessage": "Success!"
} );
createAt 이라는 필드 명에는 날짜 형식이 들어가고 해당 날짜를 기준으로 expireAfterSeconds 의 초 만큼 지나가면 데이터가 삭제 된다.
nodejs에서 mongodb를 사용할때는 다음과 같이 스키마 구조를 생성하면 된다.
new Schema({ createdAt: { type: Date, expires: 3600 }});