const cron = require('node-cron');
const mongoose = require('mongoose');
// ... (MongoDB 연결 설정)
const pricedb = mongoose.model('prices', priceSchema); // price 모델 가져오기
cron.schedule('0 0 * * *', async () => { // 매일 자정에 실행
const oneWeekAgo = new Date();
oneWeekAgo.setDate(oneWeekAgo.getDate() - 7); // 일주일 전의 날짜 확인
// time 필드가 일주일 전보다 오래된 date일 경우 DB에서 삭제
try {
const result = await pricedb.deleteMany({ time: { $lt: oneWeekAgo } });
console.log(`Deleted ${result.deletedCount} expired price documents.`);
} catch (error) {
console.error('Error deleting expired price documents:', error);
}
});
- node-cron 라이브러리를 사용하여 매일 자정에 스크립트를 실행하도록 예약
- pricedb.deleteMany({ time: { $lt: oneWeekAgo } })를 사용하여 time 필드 값이 일주일 전보다 작은 문서를 모두 삭제
- 삭제 결과를 로그에 출력
- Mongo DB의 TTL 인덱스 사용 시 간단하지만 세밀한 제어가 어려움