如果当前日期 > 文档日期,如何删除文档

How delete a document if the current date > document date

我有以下架构:

Schema = {(
   name: String,
   age: Number,
   email: String,
   date: {
     type: Date
   }
)};

我在我的数据库中插入数据动态地抛出一个表单和一个 post 路由。之后,我正在提取这些数据并使用 ejs 视图引擎在 html 中显示。

问题是我想删除日期字段小于当前日期的文档。

我正在尝试使用 TTL,但我不知道具体如何实施,我应该在模式中使用,还是在保存数据之前,在新条目中使用?

例如,在我的 post 路线中,我有以下代码:

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 小时...

我有点困惑,非常欢迎任何帮助。

您可以通过 TTL collection 实现。

您可以将 expireAfterSeconds 设置为 86400 并将日期元素设置为当前日期,它应该会在一整天后过期。

实现方式是在连接到服务器时发出此命令:

db.collection.ensureIndex( { "date.type": 1 }, { expireAfterSeconds: 86400 } )

我不知道您的应用程序如何发送它发送给 MongoDB 的数据,但您需要确保它发送的时间戳对应于当前时间之前的午夜。

例如,如果发送表单时是 1/29/2015 2:07:33 PM,则发送到 MongoDB 的时间戳应该是 1/29/2015 12:00:00 AM .使用上面设置的索引,MongoDB 将在 2015 年 1 月 30 日 12:00:00 上午删除文档。