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

การใช้งาน findOne() ใน MongoDB

เมธอด findOne() คืนค่า เพียงเอกสารเดียว ที่ตรงกับเงื่อนไข แม้จะมีหลายเอกสารที่ตรงเงื่อนไขก็ตาม (ต่างจาก find() ที่คืน Cursor ทั้งหมด)

ตัวอย่างข้อมูลทดสอบ (มีชื่อซ้ำ)

> db.demo230.insertOne({"FirstName": "Chris"});
{ "acknowledged": true, "insertedId": ObjectId("5e3fc4d2f4cebbeaebec513e") }
> db.demo230.insertOne({"FirstName": "Bob"});
{ "acknowledged": true, "insertedId": ObjectId("5e3fc4d5f4cebbeaebec513f") }
> db.demo230.insertOne({"FirstName": "Chris"});
{ "acknowledged": true, "insertedId": ObjectId("5e3fc4dbf4cebbeaebec5140") }
> db.demo230.insertOne({"FirstName": "David"});
{ "acknowledged": true, "insertedId": ObjectId("5e3fc4dff4cebbeaebec5141") }
> db.demo230.insertOne({"FirstName": "David"});
{ "acknowledged": true, "insertedId": ObjectId("5e3fc4e1f4cebbeaebec5142") }

แสดงข้อมูลทั้งหมด

> db.demo230.find();

ผลลัพธ์ (มี Chris 2 ราย, David 2 ราย)

{
  "_id": ObjectId("5e3fc4d2f4cebbeaebec513e"), "FirstName": "Chris"
}
{
  "_id": ObjectId("5e3fc4d5f4cebbeaebec513f"), "FirstName": "Bob"
}
{
  "_id": ObjectId("5e3fc4dbf4cebbeaebec5140"), "FirstName": "Chris"
}
{
  "_id": ObjectId("5e3fc4dff4cebbeaebec5141"), "FirstName": "David"
}
{
  "_id": ObjectId("5e3fc4e1f4cebbeaebec5142"), "FirstName": "David"
}

ใช้ findOne() ค้นหา FirstName = "David"

> db.demo230.findOne({"FirstName": "David"});

ผลลัพธ์ (คืนเพียงเอกสารแรกที่เจอ)

{
  "_id": ObjectId("5e3fc4dff4cebbeaebec5141"),
  "FirstName": "David"
}

จุดสำคัญ:

  • findOne() คืนค่า Object/Document โดยตรง (ไม่ใช่ Cursor)
  • หาไม่เจอจะคืน null
  • เหมาะสำหรับค้นหาเอกสารเฉพาะเจาะจง (เช่น ดูรายละเอียดโดย _id)
  • ประสิทธิภาพดีกว่า find().limit(1) เพราะหยุดค้นทันทีที่เจอตัวแรก