Mongoose -如何终止/删除子文档?

kmb7vmvb  于 2023-03-03  发布在  Go
关注(0)|答案(1)|浏览(132)

我试图在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 });
xu3bshqb

xu3bshqb1#

TTL索引是一个索引。过期时间适用于reportSchema集合中的整个文档,但不会更新任何相关文档。
您需要将reportSchema保存在单独的集合中以从TTL索引中获益,请在productSchema中使用引用而不是嵌入它们。请阅读有关https://mongoosejs.com/docs/populate.html中引用的信息
顺便说一句,橡皮擦每分钟都会起作用,所以30秒后您可能仍然会看到文档保留在集合中。

相关问题