Apollo GraphQL 해석기에서 사용되는 상위 매개변수와 Mongoose 모델 조인을 위한 MongoDB 집계의 $lookup 단계 비교
<p>저는 Apollo GraphQL과 Mongoose를 사용하여 백엔드 애플리케이션을 개발하고 있습니다. 일대다 관계를 갖는 User와 Post라는 두 가지 모델이 있습니다(한 사용자가 여러 게시물을 가질 수 있지만 하나의 게시물은 한 사용자에게 속함). </p>
<p>GraphQL 스키마의 User 필드를 쿼리하여 사용자 ID로 사용자와 해당 사용자에게 속한 모든 게시물을 가져오고 싶습니다. 또한 내 게시물 유형의 작성자 필드를 쿼리하여 게시물을 작성한 사용자를 확인하고 싶습니다. </p>
<p>MongoDB에서 서로 다른 컬렉션의 데이터를 조인하는 방법에는 Apollo GraphQL 해석기에서 상위 매개변수를 사용하거나 MongoDB 집계에서 $lookup 단계를 사용하는 두 가지 방법이 있다는 것을 배웠습니다. </p>
<p>부모 매개변수는 부모 필드에 대한 파서에서 반환된 결과를 포함하는 개체입니다. 상위 매개변수를 사용하면 상위 필드 또는 유형의 데이터에 액세스하고 이를 하위 필드 또는 유형에 전달할 수 있습니다. 예를 들어, 다음과 같이 몽구스 모델에 합류하는 데 사용할 수 있습니다. </p>
<pre class="brush:php;toolbar:false;">사용자 유형 {
아이디: 아이디!
이름: 문자열
게시물: [게시물]
}
게시물 {를 입력하세요.
아이디: 아이디!
제목: 문자열
작성자: 사용자
}
쿼리를 입력하세요.
user(id: ID!) : 사용자
}
const 해석기 = {
사용자: {
게시물(상위, 인수, 컨텍스트) {
return context.db.Post.find({ 작성자: parent.id });
},
},
};</pre>
<p>$lookup 단계는 동일한 데이터베이스의 다른 컬렉션에 대한 왼쪽 외부 조인을 수행하는 집계 파이프라인 단계입니다. $lookup 단계는 여러 컬렉션의 데이터를 단일 결과 세트로 병합하는 데 사용할 수 있습니다. 예를 들어, 다음과 같은 모델에 참여하는 데 사용할 수 있습니다. </p>
<pre class="brush:php;toolbar:false;">db.posts
.골재([
{
$조회: {
보낸 사람: "사용자",
localField: "작성자",
foreignField: "_id",
다음과 같이: "저자",
},
},
])
.toArray((err, 게시물) => {
console.log(게시물);
});</pre>
<p>지원서에 어떤 것을 사용해야 할지 잘 모르겠습니다. 저는 보다 효율적이고 확장 가능하며 유지 관리가 가능한 옵션을 선택하고 싶었습니다. </p>
<p>Apollo GraphQL 해석기에서 상위 매개변수를 사용하는 것과 MongoDB 집계에서 $lookup 단계를 사용하여 Mongoose 모델을 조인하는 것 사이의 주요 차이점과 장단점은 무엇입니까? </p>