MongoDB เอกสารแบบสอบถาม: db.collection.find() พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
MongoDB การดำเนินการค้นหาเอกสารจะดึงข้อมูลจากคอลเลกชันโดยใช้ฟังก์ชัน db.collection.find() โดยค่าเริ่มต้น เมธอดนี้จะส่งคืนเอกสารทั้งหมด รองรับเกณฑ์การกรอง เช่น การจับคู่ฟิลด์ และตัวดำเนินการ $gt และจัดรูปแบบผลลัพธ์ด้วยคำสั่ง forEach(printjson)

วิธีการดึงหรือรับข้อมูลจาก MongoDB ฐานข้อมูลจะดำเนินการโดยใช้ MongoDB การสอบถาม ในขณะดำเนินการสอบถาม ผู้ใช้สามารถกำหนดเกณฑ์หรือเงื่อนไขเพื่อดึงข้อมูลเฉพาะจากฐานข้อมูลได้
MongoDB จัดเตรียมฟังก์ชันที่เรียกว่า db.collection.find() ซึ่งใช้ในการดึงเอกสารจากก MongoDB ฐานข้อมูล
ในระหว่างนี้ MongoDB บทช่วยสอนเกี่ยวกับแบบสอบถาม คุณจะเห็นว่าฟังก์ชันนี้ถูกนำมาใช้ในรูปแบบต่างๆ อย่างไรเพื่อให้บรรลุวัตถุประสงค์ในการเรียกค้นเอกสาร
db.collection.find() คืออะไรใน MongoDB?
เมธอด db.collection.find() เป็นวิธีหลักในการอ่านเอกสารจากฐานข้อมูล MongoDB คอลเลกชัน เมื่อเรียกใช้โดยไม่มีอาร์กิวเมนต์ จะส่งคืนเอกสารทั้งหมดในคอลเลกชัน เมื่อส่งออบเจ็กต์คำค้นหา จะส่งคืนเฉพาะเอกสารที่ตรงกับเกณฑ์ที่กำหนด เพื่อให้คุณสามารถดึงข้อมูลที่ต้องการได้อย่างแม่นยำ
เมธอดนี้จะส่งคืนเคอร์เซอร์ ซึ่งเป็นตัวชี้ไปยังชุดผลลัพธ์ แทนที่จะเป็นเอกสารเอง โดยปกติแล้ว คุณจะวนลูปผ่านเคอร์เซอร์เพื่อแสดงผลลัพธ์ ซึ่งมักจะใช้ forEach(printjson) เพื่อแสดงเอกสารแต่ละฉบับในรูปแบบ JSON ที่อ่านง่าย หากคุณต้องการเพียงระเบียนเดียว MongoDB นอกจากนี้ ยังมีฟังก์ชัน findOne() ซึ่งจะส่งคืนเอกสารที่ตรงกันฉบับแรกแทนที่จะเป็นเคอร์เซอร์ โดยรวมแล้ว ฟังก์ชัน find() และ findOne() ครอบคลุมการดำเนินการอ่านส่วนใหญ่ใน MongoDB ฐานข้อมูล ตั้งแต่การดึงข้อมูลทั้งชุดไปจนถึงการกรองตามค่าฟิลด์เฉพาะ
MongoDB แบบสอบถามพื้นฐาน Operations
พื้นฐาน MongoDB ตัวดำเนินการสอบถามครอบคลุมการดำเนินการง่ายๆ เช่น การรับเอกสารทั้งหมดใน MongoDB ของสะสม. ลองดูตัวอย่าง db.collection.find ว่าเราจะทำให้สิ่งนี้สำเร็จได้อย่างไร
รหัสทั้งหมดของเราจะถูกรันใน MongoDB Javaต้นฉบับ เชลล์คำสั่ง พิจารณาว่าเรามีคอลเลกชันชื่อ 'พนักงาน' อยู่ในของเรา MongoDB ฐานข้อมูลและเราดำเนินการคำสั่งด้านล่าง

Code คำอธิบาย:
- Employee คือชื่อคอลเลกชันใน MongoDB ฐานข้อมูล
- การขอ MongoDB find query เป็นฟังก์ชันในตัวที่ใช้ในการดึงเอกสารในคอลเลกชัน
หากดำเนินการคำสั่งสำเร็จ จะแสดงผลลัพธ์ดังต่อไปนี้ MongoDB ค้นหาตัวอย่าง
Output:
ผลลัพธ์จะแสดงเอกสารทั้งหมดที่มีอยู่ในคอลเลกชัน
นอกจากนี้เรายังสามารถเพิ่มเกณฑ์ในการสืบค้นของเราเพื่อให้เราสามารถดึงเอกสารตามเงื่อนไขบางประการได้
MongoDB ตัวอย่างแบบสอบถาม – 1
ลองดูสองสามอย่าง MongoDB สอบถามตัวอย่างว่าเราจะทำให้สิ่งนี้สำเร็จได้อย่างไร
db.Employee.find({EmployeeName : "Smith"}).forEach(printjson);
Code คำอธิบาย:
- ที่นี่เราต้องการค้นหาพนักงานชื่อ "Smith" ในคอลเลกชัน ดังนั้นเราจึงป้อนเกณฑ์ตัวกรองเป็น EmployeeName : "Smith"
หากดำเนินการคำสั่งสำเร็จ จะแสดงผลลัพธ์ดังต่อไปนี้
Output:
ผลลัพธ์จะแสดงเฉพาะเอกสารที่มี "Smith" เป็นชื่อพนักงานเท่านั้นที่จะถูกส่งกลับ
MongoDB ตัวอย่างแบบสอบถาม – 2
ตอนนี้อยู่ในนี้ MongoDB บทช่วยสอนเกี่ยวกับคำสั่ง ลองดูตัวอย่างโค้ดอื่นที่ใช้ประโยชน์จากเกณฑ์การค้นหาที่มากกว่า เมื่อรวมเกณฑ์นี้ ระบบจะค้นหาเอกสารเหล่านั้นโดยที่ค่าของฟิลด์มากกว่าค่าที่ระบุ
db.Employee.find({Employeeid : {$gt:2}}).forEach(printjson);
Code คำอธิบาย:
- เราต้องการค้นหาพนักงานทั้งหมดที่มี ID มากกว่า 2 $gt เรียกว่าตัวดำเนินการเลือกแบบสอบถาม และสิ่งที่หมายถึงคือการใช้นิพจน์ที่มากกว่า
ถ้า MongoDB คำสั่ง select fields ดำเนินการสำเร็จแล้ว ผลลัพธ์จะแสดงดังนี้
Output:
เอกสารทั้งหมดที่มีรหัสพนักงานมากกว่า 2 จะถูกส่งกลับ
MongoDB สอบถาม Operaโปร
MongoDB กรองเอกสารโดยใช้ตัวดำเนินการเลือกคำค้นหาภายในเกณฑ์ find() ตัวดำเนินการเหล่านี้ช่วยให้คุณจับคู่ช่วง รายการ และการปฏิเสธ แทนที่จะจับคู่เฉพาะค่าที่ตรงกันทุกประการ ตารางด้านล่างแสดงรายการตัวดำเนินการที่ใช้บ่อยที่สุด:
| OperaTor | ความหมาย | ตัวอย่าง |
|---|---|---|
| $gt | มากกว่า | {รหัสพนักงาน: {$gt: 2}} |
| $lt | Less กว่า | {Employeeid: {$lt: 5}} |
| $gte | มากกว่าหรือเท่ากับ | {อายุ: {$gte: 18}} |
| $lte | Less มากกว่าหรือเท่ากับ | {อายุ: {$lte: 60}} |
| $เน | ไม่เท่ากับ | {สถานะ: {$ne: “ใช้งานอยู่”}} |
| $ ใน | ตรงกับค่าใดๆ ในรายการ | {แผนก: {$in: [“HR”,“IT”]}} |
นอกจากนี้ คุณยังสามารถรวมเงื่อนไขต่างๆ ด้วย $and และ $or เพื่อสร้างคำสั่งค้นหาที่แม่นยำยิ่งขึ้น การเลือกตัวดำเนินการที่เหมาะสมจะช่วยให้การค้นหามีประสิทธิภาพและส่งคืนเฉพาะเอกสารที่แอปพลิเคชันของคุณต้องการเท่านั้น
วิธีใช้ Projection ร่วมกับ find()
โดยค่าเริ่มต้น ฟังก์ชัน find() จะส่งคืนเอกสารทั้งหมด รวมถึงทุกฟิลด์ แต่บ่อยครั้งที่คุณต้องการเพียงไม่กี่ฟิลด์ เช่น ชื่อหรือรหัสประจำตัว MongoDB ฟังก์ชันนี้ช่วยให้คุณควบคุมสิ่งนี้ได้ด้วยการฉายภาพ ซึ่งเป็นอาร์กิวเมนต์ตัวที่สองที่ส่งไปยัง find() โดยจะแสดงรายการฟิลด์ที่จะรวมหรือยกเว้น
หากต้องการรวมเฉพาะฟิลด์ที่ระบุ ให้ตั้งค่าฟิลด์เหล่านั้นเป็น 1 ในออบเจ็กต์การฉายภาพ แบบสอบถามต่อไปนี้จะส่งคืนเฉพาะฟิลด์ EmployeeName สำหรับทุกเอกสาร:
db.Employee.find({}, {EmployeeName: 1}).forEach(printjson);
MongoDB ฟังก์ชันนี้จะส่งคืนฟิลด์ _id เสมอ เว้นแต่คุณจะยกเว้นโดยชัดเจน หากต้องการซ่อนฟิลด์นี้ ให้ตั้งค่า _id เป็น 0:
db.Employee.find({}, {EmployeeName: 1, _id: 0}).forEach(printjson);
นอกจากนี้ คุณยังสามารถยกเว้นฟิลด์แทนที่จะรวมฟิลด์เหล่านั้นได้โดยการตั้งค่าฟิลด์เหล่านั้นเป็น 0 ตัวอย่างเช่น คำสั่งค้นหาด้านล่างจะส่งคืนทุกฟิลด์ยกเว้น Employeeid:
db.Employee.find({}, {Employeeid: 0}).forEach(printjson);
โปรดจำไว้ว่าคุณไม่สามารถผสมผสานการรวมและการยกเว้นในการฉายภาพเดียวกันได้ ยกเว้นฟิลด์ _id การใช้การฉายภาพช่วยลดปริมาณข้อมูลที่ถ่ายโอนจากเซิร์ฟเวอร์ ทำให้การค้นหาเร็วขึ้นและผลลัพธ์อ่านง่ายขึ้น โดยเฉพาะอย่างยิ่งในเอกสารขนาดใหญ่



