我在expireAfterSeconds中的给定时间在ttl中不起作用。行在一分钟内被自己删除

时间:2018-01-03 07:39:54

标签: javascript node.js mongodb mean-stack

这是我的代码...请仔细阅读。 这会自动删除记录而不提及秒数。 我改变了createindex以确保索引...但仍然没有工作

var mongo = require('mongodb');

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/testing5";


var extend;
var time = "3600";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
    var dbase = db.db("testing5");
var myobj = ({
  "name": "Adnan khan",
   "email": "xyz@gmail.com",
   "createdAt": new Date(),
});


dbase.collection("log_events").createIndex({ "createdAt": 1 }, { expireAfterSeconds: time })


  dbase.collection("log_events").insertOne(myobj, function(err, result) {
    if (err) throw err;
    resultant = result

    console.log("data inserted and will be deleted approximately after 20 seconds");
    db.close();
  });
  });

1 个答案:

答案 0 :(得分:0)

您需要将ttl值指定为数字。所以不要写

var time = "3600";

尝试写作

var time = 3600;

另外,请注意,这是3600秒,所以1小时而不是20分钟......

https://docs.mongodb.com/manual/tutorial/expire-data/#expire-documents-after-a-specified-number-of-seconds