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

ความแตกต่างระหว่าง find() และ findOne() ใน MongoDB

findOne() คืนค่าเอกสารแรกที่ตรงเงื่อนไข หากไม่พบคืนค่า null ส่วน find() คืนค่า Cursor เสมอ (ไม่คืนค่า null)

ตัวอย่างการทดสอบกับคอลเลกชันว่าง

สร้างคอลเลกชันว่าง:

> db.createCollection('emptyCollection');
{ "ok" : 1 }

นับจำนวนเอกสาร:

> db.emptyCollection.count();

ผลลัพธ์:

0

ทดสอบ findOne() กับคอลเลกชันว่าง

> if(db.emptyCollection.findOne()){print("Returns Cursor")} else {print("Not returning cursor")}

ผลลัพธ์:

Not returning cursor

ทดสอบ find() กับคอลเลกชันว่าง

> if(db.emptyCollection.find()){print("Returns Cursor")} else {print("Not returning cursor")}

ผลลัพธ์:

Returns Cursor

สรุปความแตกต่าง

คุณสมบัติfind()findOne()
คืนค่าCursorเอกสารเดียว / null
เมื่อไม่พบข้อมูลCursor ว่าง (ไม่ใช่ null)null
ประสิทธิภาพเหมาะสำหรับหลายเอกสารเร็วกว่าสำหรับเอกสารเดียว
การใช้งานต้อง iterate (toArray, forEach)ใช้ได้ทันที

ข้อแนะนำ: ใช้ findOne() เมื่อต้องการเอกสารเพียงใบเดียว ใช้ find() เมื่อต้องการหลายเอกสารหรือต้องการ Cursor สำหรับการประมวลผลต่อ