如何在mongoose中设置子文档的过期

Pav*_*ado 4 mongoose mongodb

这是我的计划:

var authUserScheme = mongoose.Schema({
    token: String,
    ip: String,
    valid: {type: Date, default: Date.now(), expires: '1m' },   
}, {_id: false});

var usersSchema = mongoose.Schema({
// OTHER THINGS
     auth : [ authUserScheme ],
// other things
});
Run Code Online (Sandbox Code Playgroud)

当我设置'auth'路径时,mongodb删除整个文档,但我想在过期日期时只删除auth行...这可能吗?

对不起我的英语,我说西班牙语.

Ste*_*nie 5

您不能使用TTL索引在到期时删除文档的一部分.

但是,它看起来像是authUserScheme一个会话概念而不是嵌入式文档.

更好的方法是使用一个参考authUserScheme给相关用户,如:

var authUserSchema = mongoose.Schema({
    token: String,
    ip: String,
    valid: {type: Date, default: Date.now(), expires: '1m' },
    user: { type: Number, ref: 'User' }
});

var userSchema = mongoose.Schema({
    name: String,
    // Other fields
})

var AuthUser  = mongoose.model('AuthUser', authUserSchema);
var User = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)