ใช้เมธอด findOne() เพื่อดึงเอกสารแรกที่ตรงกับเงื่อนไข (หรือเอกสารแรกในคอลเลกชันถ้าไม่ระบุเงื่อนไข)
รูปแบบคำสั่ง
// เอกสารแรกในคอลเลกชัน
db.collectionName.findOne();
// เอกสารแรกที่ตรงเงื่อนไข
db.collectionName.findOne({ "fieldName": "value" });
ตัวอย่างเต็มรูปแบบ
1. สร้างข้อมูลตัวอย่าง
> db.getFirstItemDemo.insertOne({"CustomerName":"Chris","CustomerAge":28});
> db.getFirstItemDemo.insertOne({"CustomerName":"Larry","CustomerAge":26});
> db.getFirstItemDemo.insertOne({"CustomerName":"Robert","CustomerAge":29});
> db.getFirstItemDemo.insertOne({"CustomerName":"David","CustomerAge":39});
2. แสดงข้อมูลทั้งหมด
> db.getFirstItemDemo.find().pretty();
{ "_id" : ObjectId("..."), "CustomerName" : "Chris", "CustomerAge" : 28 }
{ "_id" : ObjectId("..."), "CustomerName" : "Larry", "CustomerAge" : 26 }
{ "_id" : ObjectId("..."), "CustomerName" : "Robert", "CustomerAge" : 29 }
{ "_id" : ObjectId("..."), "CustomerName" : "David", "CustomerAge" : 39 }
3. ดึงเอกสารแรก (findOne ไม่มีเงื่อนไข)
> db.getFirstItemDemo.findOne();
{ "_id" : ObjectId("..."), "CustomerName" : "Chris", "CustomerAge" : 28 }
4. ดึงเอกสารที่ตรงเงื่อนไข (CustomerAge = 39)
> db.getFirstItemDemo.findOne({ "CustomerAge": 39 });
{ "_id" : ObjectId("..."), "CustomerName" : "David", "CustomerAge" : 39 }
ความแตกต่างระหว่าง find() และ findOne()
| คำสั่ง | คืนค่า | ประเภท |
|---|---|---|
| find() | Cursor | ต้อง iterate เพื่อดูข้อมูล |
| findOne() | Document (Object) | คืนเอกสารเดียวทันที |
สรุป
findOne()คืนค่าเป็น Document โดยตรง ไม่ใช่ Cursor- เหมาะสำหรับดึงข้อมูลเดี่ยว เช่น ดูโปรไฟล์ผู้ใช้
- หากไม่มีเอกสารตรงเงื่อนไข จะคืน
null - ใน MongoDB driver ใหม่ๆ ใช้
findOne()แทนfind().limit(1)เพื่อประสิทธิภาพ