FieldsPair & Critérios
Use FieldsPair, Condition, agrupamento lógico e alias de id para configurar condições dinâmicas do MongoDB.
FieldsPair e Condition
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
Condições dinâmicas e autoRangePair
.fields(
pair("status", "ACTIVE"),
minAge == null ? null : pair("age", minAge, gte),
FieldsPair.autoRangePair("createdAt", from, to)
)de + para
between
apenas de
gte
apenas para
lte
nenhum dos dois
Retorna null, portanto pode ser excluído naturalmente das condições dinâmicas.
Agrupamento AND / OR / NOT
.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 suporta and, or, not, notAny, notAll e permite especificar diretamente o operador lógico raiz.
Regras de nome de campo e id
pair("id", value) // _id
pair("parent.id", value) // parent._id
pair("incidentId", value) // incidentId
pair("_id", value) // _idNormaliza apenas segmentos de caminho id exatos como _id. Um alias de id válido de 24 caracteres hexadecimais pode ser convertido em ObjectId, mas uma String especificada diretamente como _id não é convertida automaticamente. O caminho do campo String é baseado no nome do campo físico do MongoDB.
Filtro nativo do Driver
.driverFilter(
Filters.and(
Filters.eq("status", "ACTIVE"),
Filters.size("tags", 3)
)
)
.end()
.findAll()
.execute();driverFilter(Bson) usa a definição do Driver sem reinterpretar o BSON bruto ou mapear campos.