字段對與條件

使用 FieldsPair、Condition、邏輯分組、id 別名和 Driver-native 過濾器來構建動態 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

僅從

gte

僅到

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。如果傳遞有效的 24 位十六進制字符串作為 id 別名,則可以轉換為 ObjectId,但不會自動轉換直接指定的 _id 字符串。字符串字段路徑基於物理 MongoDB 字段名稱。

Driver-native 過濾器

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

driverFilter(Bson) 使用驅動程序定義而不重新解釋原始 BSON 或字段映射。

© 2026 Byeolnaerim. 版權所有。介紹隱私政策