【问题标题】:Documents do not expire after the set time in MongoDB using Mongoose [duplicate]使用Mongoose在MongoDB中设置时间后文档不会过期[重复]
【发布时间】:2019-07-26 12:49:45
【问题描述】:

我正在尝试在 MongoDB 中创建一个 TTL 索引。我在这里阅读了答案,Answer,这非常有帮助。

问题是文件不会过期。代码如下:

var AcThSchema = new mongoose.Schema({
    createdAt: {
      type: Date,
      expires: '1m',
      default: Date.now
    },
    key: {
      type: String,
      required: true,
      unique: true
    }
});

我注意到的奇怪的事情是,当我使用值 1 而不是 Date.now 作为 createdAt 的默认值时,文档确实会在几秒钟后被删除(可能是下次运行 mongo 的 TTL 进程时)

为什么默认值 1 的文档被删除,但 Date.now 的文档却没有?

【问题讨论】:

标签: node.js mongodb mongoose


【解决方案1】:

过期时间应该在索引内。像这样

var AcThSchema = new mongoose.Schema({
createdAt: {
  type: Date,
  index: { 
    expires: '1m'
  },
  default: Date.now
},
key: {
  type: String,
  required: true,
  unique: true
}

});

【讨论】:

  • 我也试过几秒钟。但同样的行为。
猜你喜欢
  • 2021-06-07
  • 2013-01-13
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
相关资源
最近更新 更多