프론트엔드/MongoDB
Mongoose - populate
0-SIK
2024. 10. 28. 21:03
728x90
const user = await User.findById(req.user.id).populate('matches', 'name image');
populate란?
populate는 Mongoose에서 제공하는 메서드로, 참조된 다른 컬렉션의 데이터를 함께 가져올 때 사용합니다.
MongoDB에서는 컬렉션 간 참조(reference) 관계를 설정할 수 있는데, 기본적으로 참조된 객체의 ID만 저장됩니다.
populate를 사용하면, 해당 ID에 해당하는 실제 데이터를 조회해서 포함시킵니다.
사용 예시 및 설명
코드
const user = await User.findById(req.user.id).populate('matches', 'name image');
1. findById:
- User 모델에서 **req.user.id**에 해당하는 사용자를 찾습니다.
- 이때, matches 필드에는 단순히 참조된 ID가 담겨 있습니다.
2. populate('matches', 'name image'):
- matches 필드에 연결된 참조 데이터를 가져옵니다.
- 'matches': User 스키마에 있는 참조 필드 (다른 문서와의 관계).
- 'name image': 참조된 문서의 특정 필드들만 가져오겠다는 의미입니다.
왜 populate가 필요한가?
MongoDB는 관계형 데이터베이스와 달리, 컬렉션 간 조인(join) 기능이 기본 제공되지 않습니다.
참조 필드는 보통 ID로 저장되기 때문에, 해당 ID에 연결된 데이터를 사용하려면 직접 추가 조회가 필요합니다.
Mongoose의 **populate**는 이러한 추가 조회를 자동화해주는 역할을 합니다.
728x90