$lookup
왼쪽과 오른쪽 query builder를 분리하고 LookupSpec으로 join 조건과 후처리를 정의합니다.
단순 localField / foreignField
조건이 있는 pipeline lookup
오른쪽 builder criteria, bindCondition*, 사용자 pipeline stage가 있으면 DSL이 let + pipeline + $expr 방식으로 전환합니다.
주요 LookupSpec 옵션
as
lookup 결과 field 이름
localField / foreignField
단순 equality join
bindConditionFields
왼쪽 field와 오른쪽 field 비교
bindConditionConst / Between / Like / Exists
상수 기반 pipeline 조건
unwind(boolean)
lookup 배열을 단건으로 펼침
preserveNullAndEmptyArrays
unwind 시 왼쪽 문서 보존
outerStage(s)
lookup 이후 match/project 등 추가
lookup과 전체 건수
executeLookupAndCount는 실제 프로젝트의 입찰 목록처럼 lookup 결과와 totalCount가 동시에 필요한 화면에서 사용합니다. 결과는 PageResult<ResultTuple<L, List<R>>> 형태입니다.