FieldsPair & Criteria

FieldsPair、Condition、論理グルーピング、idエイリアスとDriverネイティブフィルターを使用して動的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のみ

gte

toのみ

lte

両方なし

nullを返すため、動的条件から自然に除外できます。

AND / OR / NOTグルーピング

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をサポートし、ルート論理演算子も直接指定できます。

フィールド名とidルール

java
pair("id", value)          // _id
pair("parent.id", value)   // parent._id
pair("incidentId", value)  // incidentId
pair("_id", value)         // _id

正確なidパスセグメントのみを_idに正規化します。idエイリアスに有効な24桁の16進数文字列を渡すとObjectIdに変換できますが、_idを直接指定した文字列は自動変換しません。文字列フィールドパスは物理MongoDBフィールド名に基づきます。

Driverネイティブフィルター

java
.driverFilter(
    Filters.and(
        Filters.eq("status", "ACTIVE"),
        Filters.size("tags", 3)
    )
)
.end()
.findAll()
.execute();

driverFilter(Bson)はDSLが生のBSONを再解釈したりフィールドマッピングを行わず、ドライバ定義をそのまま使用します。

© 2026 Byeolnaerim. 無断転載を禁じます。紹介プライバシーポリシー