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 흐름

text
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(...)

© 2026 Byeolnaerim. All rights reserved.소개개인정보처리방침