我试图在30秒后使一个子文档过期。到目前为止,我所做的任何尝试都没有任何效果。
我尝试了:
const productSchema = new mongoose.Schema({
name: {
type: String
},
reports: [ReportSchema]
})
mongoose.model('Product', productSchema);
const reportSchema = new mongoose.Schema({
title: {
type: String,
},
createdAt: {
type: Date,
expires: 30
},
});
还尝试:
const reportSchema = new mongoose.Schema({
title: {
type: String,
},
createdAt: { type: Date, expires: 30 }
});
还尝试:
reportSchema.index({ createdAt: 1 }, { expireAfterSeconds: 30 });
1条答案
按热度按时间xu3bshqb1#
TTL索引是一个索引。过期时间适用于reportSchema集合中的整个文档,但不会更新任何相关文档。
您需要将reportSchema保存在单独的集合中以从TTL索引中获益,请在productSchema中使用引用而不是嵌入它们。请阅读有关https://mongoosejs.com/docs/populate.html中引用的信息
顺便说一句,橡皮擦每分钟都会起作用,所以30秒后您可能仍然会看到文档保留在集合中。