$lookup
构建基于简单连接和 let/pipeline 的 LookupSpec、Driver-native 原始阶段、unwind 和 lookup 计数流程。
localField / foreignField
let + pipeline + $expr
• bindConditionFields(leftField, condition, rightField)
• bindConditionFieldsLeftToObjectId(...)
• bindConditionConst, bindConditionBetween, bindConditionLike
• bindConditionExists, bindConditionIsNull, bindConditionIsNotNull
• rawStage(Bson) 用于 Driver-native lookup pipeline 阶段
• unwind(preserveNullAndEmptyArrays)
• outerStage(Bson) / outerStages(...) 用于 $lookup 之后的阶段
执行 Lookup
unwind(...)를 사용하지 않은 기본 findAll lookup은 right 결과를 List<R>로 반환합니다. 단건 left/right가 필요하면 find().executeLookup(...) 경로를 사용합니다.
Lookup + count / exists
executeLookupAndCount(...) 以 $facet(data, count) 形式返回 data 和 totalCount。count/exists builder 也可以将 lookup 结果作为左右元组接收。