Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 30天后从mongoDB设置中删除对象_Node.js_Database_Mongodb - Fatal编程技术网

Node.js 30天后从mongoDB设置中删除对象

Node.js 30天后从mongoDB设置中删除对象,node.js,database,mongodb,Node.js,Database,Mongodb,我正在使用MongoDB、Nodejs等 我有一个关于我的用户活动的活动集合,包括添加新项目、更新项目、删除项目等,但我不希望该活动永久存在于我的数据库中,我希望该活动在创建和添加do user dashboard后30天内过期,但我现在不知道该怎么做…希望您能帮助我! 谢谢大家! 以下是我的活动模式: 这是我的服务器端: 这就是将所有用户活动发送到仪表板的原因 //Render User Activity exports.render_user_activity = (req, res) =

我正在使用MongoDB、Nodejs等

我有一个关于我的用户活动的活动集合,包括添加新项目、更新项目、删除项目等,但我不希望该活动永久存在于我的数据库中,我希望该活动在创建和添加do user dashboard后30天内过期,但我现在不知道该怎么做…希望您能帮助我! 谢谢大家!

以下是我的活动模式:

这是我的服务器端:

这就是将所有用户活动发送到仪表板的原因

//Render User Activity

exports.render_user_activity = (req, res) => {
    let userid = req.user._id;

    User.findById(userid)
        .exec((err, user) => {
            if (err) {
                console.log(err);
            }

            Activity.find({ user: user })
                .exec((err, activities) => {
                    if (err) {
                        console.log(err);
                    }
                    res.send(activities);
            });
      });
};
我已经读到我可以使用user.createIndex,但我不知道如何或是否是最好的解决方案。。
谢谢大家!

您可以在MongoDB中使用TTL生存时间索引。 有了这个TTL,您可以在一定时间到期后或在日历中的特定日期和时间删除任何文档

根据您的问题,您希望每个文档在创建30天后过期。 您已经创建了一个字段,只需在其周围创建一个索引即可

let activitySchema = new mongoose.Schema({
  .
  .
  .
  .
}, {timestamps: true});

activitySchema.index({createdAt: 1},{expireAfterSeconds: 2592000});

30天=2592000秒

是的!谢谢D
let activitySchema = new mongoose.Schema({
  .
  .
  .
  .
}, {timestamps: true});

activitySchema.index({createdAt: 1},{expireAfterSeconds: 2592000});