在express js server中删除超过24小时的mongoose文档,可以按照以下步骤进行操作:
setInterval
来实现。Date
对象和Date.now()
方法来计算时间差。下面是一个示例代码:
const express = require('express');
const mongoose = require('mongoose');
const app = express();
// 连接到MongoDB数据库
mongoose.connect('mongodb://localhost/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB 连接成功'))
.catch(err => console.log(err));
// 创建Mongoose模型
const Document = mongoose.model('Document', new mongoose.Schema({
content: String,
createdAt: { type: Date, default: Date.now }
}));
// 定时任务,每24小时执行一次
setInterval(async () => {
try {
// 计算24小时前的时间
const twentyFourHoursAgo = new Date(Date.now() - 24 * 60 * 60 * 1000);
// 查找超过24小时的文档
const documentsToDelete = await Document.find({ createdAt: { $lt: twentyFourHoursAgo } });
// 删除文档
await Document.deleteMany({ _id: { $in: documentsToDelete.map(doc => doc._id) } });
console.log(`${documentsToDelete.length} 个文档已删除`);
} catch (err) {
console.log(err);
}
}, 24 * 60 * 60 * 1000);
app.listen(3000, () => console.log('服务器已启动'));
在上述示例代码中,我们首先连接到MongoDB数据库,并创建了一个名为Document
的Mongoose模型,其中包含了一个createdAt
字段用于记录文档创建时间。
然后,我们使用setInterval
方法创建了一个定时任务,每24小时执行一次。在定时任务中,我们计算出24小时前的时间,并使用Document.find
方法查找超过该时间的文档。然后,我们使用Document.deleteMany
方法删除这些文档。
请注意,上述示例代码仅供参考,实际使用时需要根据你的项目需求进行适当的修改。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云数据库MongoDB、腾讯云云函数(SCF)。
腾讯云产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云