Javascript 猫鼬。将生存时间设置为特定字段

Javascript 猫鼬。将生存时间设置为特定字段,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,我有以下文件: const User = mongoose.model('User', { age: Number, city: String, history: [new mongoose.Schema({ id: String, createdAt: { type: Date, default: Date.now(), index: {

我有以下文件:

const User = mongoose.model('User', {
    age: Number,
    city: String,
    history: [new mongoose.Schema({
        id: String,
        createdAt: {
            type: Date,
            default: Date.now(),
            index: {
                expires: 60 * 60 * 5
            }
        }
    })]
});
“历史记录”字段将存储用户聊天持续5小时的ID。5小时后,“历史记录”字段中的一个元素将被删除(已过期)。 当我创建这样的用户时:

let user = new User({
    age: 20,
    city: 'SPb',
    history: [
        {
            id: 'asd',
            createdAt: new Date()
        }
    ]
});
user.save()

它会创建用户文档,但5小时后会删除整个文档,而不是从数组中删除元素:(

,这是TTL索引无法完成的。请参阅说明:

TTL索引是MongoDB可以用来 在特定时间后自动从集合中删除文档 时间量或特定时钟时间的时间量

您需要自己编写清理逻辑,或者将要删除的元素建模为单独的文档,然后通过TTL索引进行清理