공식 문서를 나름 변역해보려고 합니다만... 영어 실력이 좋지 않습니다. 개인 학습을 위해 사용하는만큼 참고만 하시길 바랍니다.
공식문서

정의

$lookup

3.2버전에서 새롭게 추가 되었습니다.
left outer join을 수행합니다. 입력된 각 도큐먼트에 대해 $lookup 스테이지는 조인 되는 콜렉션으로부터 일치하는 요소를 가진 새로운 배열 필드를 추가합니다. $lookup은 이 새로운 도큐먼트를 다음 스테이지에 전달해줍니다.

문법

$lookup 스테이지는 다음과 같은 문법들을 가집니다.

Equality Match (한글로 너무 어색해욤 ㅠ)


조인 되는 콜렉션의 도큐먼트들의 필드와 입력하는 도큐먼트의 필드 간에 equality match를 수행하려면 다음 과 같은 문법을 사용하면 됩니다.

{
   $lookup:
     {
       from: <collection to join>,
       localField: <field from the input documents>,
       foreignField: <field from the documents of the "from" collection>,
       as: <output array field>
     }
}

$lookup은 아래의 필드를 가집니다.

필드 설명
from 동일한 데이터베이스 내에서 조인이 수행될 콜렉션을 특정합니다. from은 새딩되지 않습니다
localField 도큐먼트로부터 $lookup 스테이지에 입력할 필드를 선택합니다. $lookup은 localFieldforeignField에게 equality match를 수행합니다.
foreignField from 콜렉션에 있는 도큐먼트로부터 필드를 특정합니다.
as 입력 도큐머트에 더해질 새로운 배열 필드의 이름을 특정합니다.

동작은 아래의 SQL 문법과 유사할 것입니다.

SELECT *, <output array field>
FROM collection
WHERE <output array field> IN (SELECT *
                               FROM <collection to join>
                               WHERE <foreignField>= <collection.localField>);