Удалить объект из времени установки mongoDB через 30 дней - PullRequest
0 голосов
/ 17 октября 2018

Я использую MongoDB, Nodejs и т. Д. *

У меня есть коллекция Activity о моих пользовательских действиях "Добавить новый проект", "Обновить проект", "Удалить проект" и т. Д., Но яЯ не хочу, чтобы эта активность была постоянной в моей базе данных, я хочу, чтобы она истекла через 30 дней после создания и добавления панели пользователя do do, но я не знаю, как это сделать ... Надеюсь, вы мне поможете!Спасибо!

Вот моя схема действий:

let mongoose = require("mongoose");

let activitySchema = new mongoose.Schema({

  activity: String,
  user: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'
  },
  created: {
    type: Date,
    default: Date.now
  }
})

module.exports = mongoose.model('Activity', activitySchema);

Вот моя сторона сервера:

(вот чтоотправить все действия пользователя на панель управления)

//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);
            });
      });
};

Я читал, что могу использовать .createIndex, но я не знаю, как и если это лучшее решение .. Спасибо!

1 Ответ

0 голосов
/ 17 октября 2018

Вы точно можете использовать индекс TTL (Time to Live) в MongoDB.С помощью этого TTL вы можете удалить любой документ по истечении определенного времени или в определенную дату и время в календаре.

По вашему вопросу вы хотите, чтобы срок действия каждого документа истек через 30 дней после создания.У вас уже есть поле created, просто создайте индекс вокруг него.

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

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

30 дней = 2592000 секунд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...