2014-01-07 4 views
4

에서 하위 문서에 대한 만료 설정 : 내가 '인증'경로를 설정는 어떻게이 내 계획입니다 몽구스

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 
}); 

는 MongoDB를 전체 문서를 삭제,하지만 난 단지 인증 행 때를 삭제하려면 만료일 ... 가능하니?

죄송하지만 제 영어는 스페인어로합니다.

+2

아니, 그건 불가능합니다. 하위 문서를 고유 한 문서에 넣어야합니다. – WiredPrairie

답변

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);