FieldsPair & Criteria
ใช้ FieldsPair, Condition, การจัดกลุ่มเชิงตรรกะ, id alias และ Driver-native filter เพื่อสร้างเงื่อนไข MongoDB แบบไดนามิก.
FieldsPair และ 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
เงื่อนไขแบบไดนามิกและ autoRangePair
.fields(
pair("status", "ACTIVE"),
minAge == null ? null : pair("age", minAge, gte),
FieldsPair.autoRangePair("createdAt", from, to)
)จาก + ถึง
between
จากเท่านั้น
gte
ถึงเท่านั้น
lte
ไม่มีทั้งคู่
คืนค่า null จึงสามารถถูกละเว้นได้อย่างเป็นธรรมชาติในเงื่อนไขแบบไดนามิก.
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 รองรับ and, or, not, notAny, notAll และสามารถกำหนด root logical operator ได้โดยตรง.
กฎชื่อฟิลด์และ id
pair("id", value) // _id
pair("parent.id", value) // parent._id
pair("incidentId", value) // incidentId
pair("_id", value) // _idทำให้ path segment ของ id ถูกต้องเฉพาะ _id เท่านั้น หากส่ง 24 ตัวอักษร hex ที่ถูกต้องไปยัง id alias จะสามารถแปลงเป็น ObjectId ได้ แต่จะไม่แปลง String ที่กำหนด _id โดยตรง เส้นทางฟิลด์ String จะอิงตามชื่อฟิลด์ MongoDB ทางกายภาพ.
Driver-native filter
.driverFilter(
Filters.and(
Filters.eq("status", "ACTIVE"),
Filters.size("tags", 3)
)
)
.end()
.findAll()
.execute();driverFilter(Bson) ใช้การกำหนดของ Driver โดยไม่ต้องตีความ raw BSON ใหม่หรือทำการแมพฟิลด์.