Query Flow
executeEntity/executeCustomClass에서 시작하는 일반 Query와 root aggregation, Atlas Search, Vector Search의 진입 흐름을 구분합니다.
1. 실행 컨텍스트 선택
executeEntity(Class<E>, key)
entity type과 resolver key를 선택하고 collection 이름은 MongoExecutionContext#getCollectionName(...)으로 결정합니다.
executeCustomClass(Class<E>, key, collectionName)
결과 mapping type과 실제 collection 이름을 직접 지정합니다.
2. 일반 Query 흐름
executeEntity(...) / executeCustomClass(...)
-> fields(...) / driverFilter(...)
-> end()
-> findAll / find / count / distinct / delete / exists / atomicUpdate
-> execute...save, saveAll, bulk operation, entity delete와 createHistory처럼 condition builder가 필요 없는 작업은 execution builder에서 바로 호출합니다. 별도 public update() terminal은 없고 조건 update는 atomicUpdate()를 사용합니다.
3. 첫 stage 제약이 있는 흐름
aggregation()
첫 stage부터 사용자가 Driver Bson pipeline을 직접 구성합니다.
search(index)
$search/$searchMeta first-stage 제약을 지키는 Atlas Search 전용 builder입니다.
vectorSearch(index)
$vectorSearch first-stage 제약을 지키는 Vector Search 전용 builder입니다.
4. Driver-native escape hatch
• 일반 filter: driverFilter(Bson)
• 정렬: SortSpec.driver(Bson)
• root aggregation: aggregation().stage(Bson)
• Search operator/options: operator(SearchOperator), driverOptions(...), stage(Bson)
• Vector query/options: query(VectorSearchQuery), driverOptions(...), stage(Bson)
• publisher option: customizeQuery(...), customizeAggregation(...)