ตรวจสอบความมีอยู่ของเอกสารใน MongoDB ด้วย findOne()
บทความนี้สาธิตว่าใน MongoDB ไม่มีคำสั่ง EXISTS เหมือน SQL แต่สามารถใช้ findOne() เพื่อตรวจสอบว่าเอกสารที่ตรงเงื่อนไขมีอยู่หรือไม่ (คืนค่า Document ถ้ามี, null ถ้าไม่มี)
ขั้นตอนที่ 1: สร้าง Collection และเพิ่มข้อมูลตัวอย่าง
> db.existsAlternateDemo.insertOne({"StudentName":"Chris"});
{ "acknowledged": true, "insertedId": ObjectId("5e06d23f9e4dae213890ac5c") }
> db.existsAlternateDemo.insertOne({"StudentName":"Chris","StudentAge":21});
{ "acknowledged": true, "insertedId": ObjectId("5e06d2559e4dae213890ac5d") }
> db.existsAlternateDemo.insertOne({"StudentName":"Chris","StudentAge":22,"StudentCountryName":"US"});
{ "acknowledged": true, "insertedId": ObjectId("5e06d2689e4dae213890ac5e") }
ขั้นตอนที่ 2: แสดงข้อมูลทั้งหมด
> db.existsAlternateDemo.find();
ผลลัพธ์: 3 เอกสาร ชื่อ Chris ทั้งหมด
ขั้นตอนที่ 3: ใช้ findOne() ตรวจสอบการมีอยู่
ค้นหาเอกสารแรกที่มี StudentCountryName: "US"
> db.existsAlternateDemo.findOne({"StudentCountryName": "US"});
ผลลัพธ์ที่ได้
{ "_id": ObjectId("5e06d2689e4dae213890ac5e"), "StudentName": "Chris", "StudentAge": 22, "StudentCountryName": "US" }
สรุป:
findOne()คืนค่าเอกสารแรกที่ตรงเงื่อนไข (หรือ null) - ใช้แทนEXISTSของ SQL- มีประสิทธิภาพกว่า
find().limit(1)เพราะหยุดค้นหาทันทีเมื่อเจอตัวแรก - เหมาะสำหรับ Logic แบบ Conditional (เช่น ถ้ามีให้ Update, ไม่มีให้ Insert = Upsert)