我有以下架构:
Schema = {(
name: String,
age: Number,
email: String,
date: {
type: Date
}
)};
我正在我的数据库中插入数据,然后掷出一个表格和一个后期路线。之后,我将使用ejs视图引擎提取此数据并显示在html中。
问题是我想要删除日期字段小于当前日期的文档。
我试图使用TTL,但我不确切知道应该如何在架构中使用,或者在保存数据之前,在新条目中使用?
例如,在我的帖子路线中,我有以下代码:
var new = new Schema({
name: req.body.name,
age: req.body.age,
email: req.body.email,
date: {
type: req.body.date
}
});
new.save......
.... etc
我想在req.body.date之后24小时删除此文档,并在创建后没有24 ...
我有点困惑,非常欢迎任何帮助。
答案 0 :(得分:0)
您可以使用TTL collection来实现此目的。
您可以将expireAfterSeconds
设置为86400,并将日期元素设置为当前日期,并且应该在一整天后过期。
实现此方法的方法是,在连接到服务器时,您将发出以下命令:
db.collection.ensureIndex( { "date.type": 1 }, { expireAfterSeconds: 86400 } )
我不知道你的应用程序如何发送它发送给MongoDB的数据,但是你要确保它发送的是与当前时间之前的午夜相对应的时间戳。
例如,如果是在2015年1月29日下午2:07:33发送表单时,发送到MongoDB的时间戳应该是1/29/2015 12:00:00 AM。使用上面设置的索引,MongoDB将于2015年1月30日凌晨12:00:00删除该文档。