私はキャッシュとして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を使用していますか? –