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

ใช้ Regex ใน MongoDB findOne() ค้นหาเอกสารเดียว

เมธอด findOne() คืนค่าเอกสารเดียวที่ตรงเงื่อนไข ใช้ร่วมกับ $regex สำหรับ pattern matching

> db.demo655.insertOne({subject: "MySQL"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea050254deddd72997713cc") }
> db.demo655.insertOne({subject: "MongoDB"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea0502b4deddd72997713cd") }
> db.demo655.insertOne({subject: "Java"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea050314deddd72997713ce") }

แสดงข้อมูล:

> db.demo655.find();

คิวรี findOne ด้วย Regex หาตัวอักษร "M"

> db.demo655.findOne({subject: {$regex: /M/}});

ผลลัพธ์ - ได้ MySQL (รายการแรกที่ match):


ความแตกต่าง find() vs findOne()

Regex Patterns ที่น่าสนใจ

  • /M/ - มีตัว M อยู่ที่ไหนก็ได้
  • /^M/ - เริ่มต้นด้วย M (ใช้ index ได้)
  • /M$/ - จบด้วย M
  • {$regex: "pattern", $options: "i"} - case insensitive

ประสิทธิภาพ: findOne หยุดค้นหาที่เจอตัวแรก เร็วกว่า find สำหรับเช็ค existence

เมธอดคืนค่าใช้เมื่อไหร่
find()Cursor (ทุกเอกสารที่ match)ต้องการหลายรายการ, ต้อง iterate
findOne()Document เดียว (หรือ null)ต้องการแค่ 1 รายการ, check exists