2014-10-28 2 views
0

MongoDB와 Node.js에 들어가려고하고 있는데, 가장 권장되는 모듈은 Mongoose입니다. 나는 mysql과 같은 스키마를 만드는 아이디어를 좋아했으며 사용하기가 쉽다.왜 몽구스는 부모 모델에 자식 ID의 참조를 저장합니까?

내가 이해하지 못했던 한 가지는 참조에 관한 것입니다.

var SessionSchema = new Schema({ 
    created: { type: Date, default: Date.now }, 
    updated: { type: Date, default: Date.now }, 
    client: { type: String, required: true }, 
    events: [{ type: Schema.Types.ObjectId, ref: 'Event', required: true }] 
}); 


var EventSchema = new Schema({ 
    created: { type: Date, default: Date.now }, 
    session: { type: Schema.Types.ObjectId, ref: 'Session', childPath: 'events', required: true }, 
    data: Schema.Types.Mixed 
}); 

이제 세션 내부에서 이벤트 ID를 참조해야하는 이유는 무엇입니까? 왜 그냥 eventsModel.find ({session : session._id})를 쿼리하지 않으시겠습니까?

세션에 수백 개의 이벤트가있을 수 있으므로 거대한 세션 문서가 생성됩니다.

무엇이 여기에 있습니까? 따라

+0

이 스키마입니까, 아니면이 작업을 수행하는 문서 또는 자습서를 참조하고 있습니까? – laggingreflex

+0

스키마의 일부 열에 불과합니다. 왜 묻는거야? – sUP

답변

0

잘가, 보통 일반적인 경로는 나중에 참조 데이터와 쿼리를 채울 때까지 나는 인구 문서에서 추출로, 참조의 그 종류를 확인하는 것입니다 :

없는 MongoDB를 거기에 결합되어

하지만, 때로 우리는 여전히 다른 컬렉션의 문서에 대한 참조를 으로 원합니다. 인구가 들어오는 곳이다.

당신이 인구에 관심이 있다면 당신은 당신이 수동으로 사용자의 필요와 쿼리의 따라 달라집니다에 전혀 해를 끼치 지 그것을 할 수 없다 피크 here

을합니다.

+0

충분히 공정합니다. 나는 mysql에서하는 것처럼 "eventsModel.find ({session : session._id}") 쿼리보다 더 나은 구현이라고 생각했다. – sUP

관련 문제