Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

คิวรีเลือกเฉพาะสตริงที่เป็นตัวเลขใน MongoDB

การค้นหาเอกสารที่ฟิลด์เป็นสตริงตัวเลขอย่างเดียว

ใช้ 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 รองรับรูปแบบส่วนใหญ่