FieldsPair & Criteria
FieldsPair, Condition, logical grouping, id alias와 Driver-native filter를 사용해 동적 MongoDB 조건을 구성합니다.
FieldsPair와 Condition
java
FieldsPair.pair(field, value)
FieldsPair.pair(field, value, condition)
FieldsPair.pair(field, condition)• eq, notEq, between, gt/gte, lt/lte
• in, notIn, like, regex, exists
• isNull, isNotNull, all, near, nearSphere, elemMatch
동적 조건과 autoRangePair
java
.fields(
pair("status", "ACTIVE"),
minAge == null ? null : pair("age", minAge, gte),
FieldsPair.autoRangePair("createdAt", from, to)
)from + to
between
from only
gte
to only
lte
둘 다 없음
null을 반환하므로 동적 조건에서 자연스럽게 제외할 수 있습니다.
AND / OR / NOT grouping
java
.fields()
.and(f -> f.fields(
pair("status", List.of("ACTIVE_1", "ACTIVE_2"), in),
pair("age", 20, gte)
))
.or(f -> f.fields(
pair("name", "kim", like),
pair("name", "lee", like)
))
.notAny(f -> f.fields(pair("banned", true)))
.end()FieldBuilder는 and, or, not, notAny, notAll을 지원하고 root logical operator도 직접 지정할 수 있습니다.
필드명과 id 규칙
java
pair("id", value) // _id
pair("parent.id", value) // parent._id
pair("incidentId", value) // incidentId
pair("_id", value) // _id정확한 id path segment만 _id로 정규화합니다. id alias에 유효한 24자리 hex String을 넘기면 ObjectId로 변환할 수 있지만 _id를 직접 지정한 String은 자동 변환하지 않습니다. String field path는 physical MongoDB field name 기준입니다.
Driver-native filter
java
.driverFilter(
Filters.and(
Filters.eq("status", "ACTIVE"),
Filters.size("tags", 3)
)
)
.end()
.findAll()
.execute();driverFilter(Bson)은 DSL이 raw BSON을 다시 해석하거나 field mapping하지 않고 Driver 정의를 그대로 사용합니다.