这是我的计划:
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
});
当我设置'auth'路径时,mongodb删除整个文档,但我想在过期日期时只删除auth行...这可能吗?
对不起我的英语,我说西班牙语。
答案 0 :(得分:5)
您无法在到期时使用TTL索引删除部分文档。
但是,看起来你的authUserScheme
实际上更像是一个会话概念而不是嵌入式文档。
更好的方法是使用authUserScheme
中的reference与相关用户,例如:
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);