字段对与条件
使用 FieldsPair、Condition、逻辑分组、id 别名和驱动程序原生过滤器构建动态 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)
)从 + 到
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 字段名称。
驱动程序原生过滤器
java
.driverFilter(
Filters.and(
Filters.eq("status", "ACTIVE"),
Filters.size("tags", 3)
)
)
.end()
.findAll()
.execute();driverFilter(Bson) 使用驱动程序定义,而不重新解释原始 BSON 或进行字段映射。