การค้นหาเอกสารที่ฟิลด์เป็นสตริงตัวเลขอย่างเดียว
ใช้ Regular Expression (Regex) ร่วมกับคิวรี find() เพื่อกรองเฉพาะเอกสารที่ค่าของฟิลด์ประกอบด้วยตัวเลข 0-9 เท่านั้น
ตัวอย่างข้อมูล
> db.selectOnlyNumericDemo.insertOne({"UserId":"User101"});
> db.selectOnlyNumericDemo.insertOne({"UserId":"102"});
> db.selectOnlyNumericDemo.insertOne({"UserId":"User103"});
> db.selectOnlyNumericDemo.insertOne({"UserId":"104"});
คิวรี: เลือกเฉพาะ UserId ที่เป็นตัวเลขทั้งหมด
> db.selectOnlyNumericDemo.find({'UserId': /^\d+$/});
ผลลัพธ์
ได้เฉพาะเอกสารที่ UserId เป็น "102" และ "104"
{ "_id" : ObjectId("5cbdb716de8cc557214c0e17"), "UserId" : "102" }
{ "_id" : ObjectId("5cbdb725de8cc557214c0e19"), "UserId" : "104" }
คำอธิบาย Regex
^: เริ่มต้นของสตริง\d+: ตัวเลข 1 ตัวขึ้นไป$: สิ้นสุดของสตริง
รูปแบบ /^\d+$/ หมายถึง "สตริงทั้งหมดต้องเป็นตัวเลขเท่านั้น ไม่มีอักขระอื่นปน"
เคล็ดลับเพิ่มเติม
- ถ้าต้องการรองรับเครื่องหมายลบ (Negative numbers):
/^-?\d+$/ - ถ้าต้องการรองรับทศนิยม:
/^-?\d+(\.\d+)?$/ - Regex ใน MongoDB ใช้เครื่องยนต์ PCRE รองรับรูปแบบส่วนใหญ่