프론트엔드/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