Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用NodeJS在MongoDb中创建文档1个月后删除文档_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 使用NodeJS在MongoDb中创建文档1个月后删除文档

Node.js 使用NodeJS在MongoDb中创建文档1个月后删除文档,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个日志集合,希望删除1个月前创建的日志 我在NodeJS中使用Mongoose,我已经用“minute”参数进行了测试,结果很好。但问题是,我想确定这些文件将在一个月后被删除 这就是我所做的 const mongoose = require('mongoose'); const Schema = mongoose.Schema; mongoose.set('useCreateIndex', true); mongoose.connect('mongodb://localhost:27017

我有一个日志集合,希望删除1个月前创建的日志

我在NodeJS中使用Mongoose,我已经用“minute”参数进行了测试,结果很好。但问题是,我想确定这些文件将在一个月后被删除

这就是我所做的

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
mongoose.set('useCreateIndex', true);
mongoose.connect('mongodb://localhost:27017/blabla', {useNewUrlParser: true});
mongoose.Promise  = global.Promise;



var Logs = new Schema({

AppName:{
    type: String,
    required: [true,'Application Name field is required']
},  
CreatedDate:{
    type: Date,
    required: [true,'Created Date field is required'],        
},
ExpireAt: { type: Date, default: Date.now, expires: '2m' },

});

module.exports.Logs = mongoose.model('logs', Logs);    
如您所见,“expires”参数有2m(2分钟) 我担心如果我给“100万”(一个月),它会接受吗?我没有找到可接受的参数

我曾尝试将直接日期+1个月或数字值指定为秒,但没有成功


那么,我怎样才能在文档创建一个月后让它们删除呢?

您可以使用
1m
来执行此操作,如下面的代码片段所示

expireAt: {
  type: Date,
  default: Date.now,
  index: { expires: '5m' },
},

5m在这里是一个快捷方式,您可以参考它来检查如何使用单词而不是数字来提高设置的可读性。

我猜,它对于
M
,并不意味着月份,它同样意味着分钟。相反,您可以使用类似于
30d
的方法,虽然它并不精确,但对于精确的1个月,您可能需要计算1个月后的日期。然后输入
expireeat
或计算
expireAfterSeconds
的秒数,您可以使用矩进行此日期/时间操作。我已尝试使用“1h”,一小时后文档已被删除。但我觉得这一个月还是有点冒险。我使用了另一个答复中给出的方法,它是有效的。我将把一个月转换为秒。。非常感谢。