在MongoDB中使用Mongoose在设置的时间之后文档不会过期

时间:2019-03-05 05:55:14

标签: node.js mongodb mongoose

我正在尝试在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的文档?

1 个答案:

答案 0 :(得分:0)

到期应该在内部索引中。像这样

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

});