ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Mongoose - populate
    프론트엔드/MongoDB 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

    '프론트엔드 > MongoDB' 카테고리의 다른 글

    Mongoose - $and, $ne, $nin, $in, $or  (0) 2024.10.28
    useNewUrlParser와 useUnifiedTopology 에러  (0) 2024.04.16
    MongoDB와 Mongoose의 차이점  (0) 2024.01.09
Designed by 0-SIK.