com.byeolnaerim:reactive-mongo-dsl
MongoDB Reactive Streams Driver의 기능을 그대로 활용하면서 동적 query, aggregation, lookup, atomic update, bulk, Atlas Search와 Vector Search를 Reactor 기반의 일관된 DSL로 연결합니다.
Reactive Mongo DSL 1.0.0
reactive-mongo-dsl은 MongoDB Reactive Streams Driver와 Project Reactor 위에서 동적 조건, 조회, paging, aggregation, $lookup, grouping, atomic update, bulk, Atlas Search와 Vector Search를 하나의 체이닝 흐름으로 연결하는 Java 라이브러리입니다.
Driver-first
MongoDB Java Driver를 대체하지 않습니다. Driver가 제공하는 typed builder는 그대로 활용하고 DSL은 반복적인 조합과 Reactor 연결을 단순화합니다.
Framework-independent core
코어는 Spring Data MongoDB에 직접 의존하지 않습니다. 기본 DriverMongoExecutionContext는 Reactive Streams Driver를 직접 사용합니다.
Escape hatch
Bson, SearchOperator, VectorSearchQuery, Driver option customizer를 직접 받을 수 있어 Driver에 새 기능이 먼저 추가되어도 기존 DSL 흐름 안에서 사용할 수 있습니다.
1.0.0 기준
Artifact
com.byeolnaerim:reactive-mongo-dsl:1.0.0
Java
21+
MongoDB Java Driver
5.10.0 기준
Reactor
Reactor BOM 2025.0.7 기준
Spring Data MongoDB
선택 사항입니다. Spring 프로젝트에서는 애플리케이션 측 adapter로 기존 mapping/auditing 설정을 연결합니다.
build.gradle
text주요 실행 흐름
일반 Query
executeEntity(...) -> fields(...) -> end() -> find/findAll/count/distinct/delete/exists/atomicUpdate
Driver-native Aggregation
executeEntity(...).aggregation().stage(Bson)...으로 첫 stage부터 Driver pipeline을 직접 구성합니다.
Atlas Search
executeEntity(...).search(index)에서 $search 전용 operator와 terminal을 구성합니다.
Vector Search
executeEntity(...).vectorSearch(index)에서 query vector, ANN/ENN, filter, nested vector option을 구성합니다.
Transaction
getTxJob(...)이 MongoDB ClientSession을 Reactor Context로 전파합니다.