캐시로 MongoDB (v3.4)를 사용하고 TTL 인덱스를 사용하여 레코드를 만료합니다. 그러나 TTL 설정이 제대로 작동하지 않는 것 같습니다. 특히, 데이터를 삽입하기 위해 엔드 포인트를 사용하여 테스트했습니다 (아래 참조).NodeJS에서 MongoDB TTL 만료가 올바르게 작동하지 않습니다.
끝점 mongoInsert는 5 분 내에 만료됩니다. 그러나 ~ 1 분 후에 문서가 삭제 된 것으로 보입니다. 나는 moment(). utc(). toDate()를 사용하여 UTC 시간 사용에 관한 다른 유사한 제안을 찾아 보았고 그 행동은 동일했다. 새로운 Date()가 UTC 시간을 반환하므로 같은 효과가 있어야합니다.
포함되어야하지만 설명서에 자세히 설명되어 있지 않은 다른 설정이 있는지 확실하지 않습니다. 누구든지 전에 이것을 경험 했습니까?
function mongoInsert(mongoClient){
return function(req, res){
mongoClient.connect('mongodb://localhost:27017/cache', function(err, db) {
db.collection('data', function(err, collection){
var testItems = [{
"_id": "abc12345",
"dmac": "abc",
"createdAt": new Date(),
"val": {
"0": 10,
"1": 15,
"2": 5
},
"res": "minutes",
"time": "2017-12-04T00:12:58Z"
}];
let unix = new moment().valueOf();
collection.createIndex({createdAt: unix}, {expireAfterSeconds: 300});
collection.insertMany(testItems, function(err, items){
db.close();
res.json(items);
});
})
})
}
}
여기에서 MongoDB 버전을 언급하십시오. –
Mongo 버전 3.4를 사용하고 있습니다. – jlyh
mongoose.js를 사용하고 있습니까? –