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

การใช้ findOne() ใน MongoDB แทนฟังก์ชัน EXISTS ของ SQL

ตรวจสอบความมีอยู่ของเอกสารใน 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)