Node.js 使用NodeJS在MongoDb中创建文档1个月后删除文档
我有一个日志集合,希望删除1个月前创建的日志 我在NodeJS中使用Mongoose,我已经用“minute”参数进行了测试,结果很好。但问题是,我想确定这些文件将在一个月后被删除 这就是我所做的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
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”,一小时后文档已被删除。但我觉得这一个月还是有点冒险。我使用了另一个答复中给出的方法,它是有效的。我将把一个月转换为秒。。非常感谢。