พื้นฐานการใช้งาน find() ใน MongoDB
เมธอด find() ใช้สำหรับเลือกเอกสารจากคอลเลกชันหรือ View และคืนค่าเป็น Cursor ที่ชี้ไปยังเอกสารที่เลือกได้
พฤติกรรมพื้นฐาน
- find() โดยไม่มีพารามิเตอร์: คืนเอกสารทั้งหมดในคอลเลกชัน พร้อมทุกฟิลด์
- find(query): คืนเอกสารที่ตรงตามเงื่อนไข query
- find(query, projection): คืนเอกสารที่ตรงเงื่อนไข พร้อมเลือกฟิลด์ที่ต้องการ (projection)
ตัวอย่างข้อมูลทดสอบ
> db.demo405.insertOne({ "StudentInfo": { "Name": "Chris" } });
> db.demo405.insertOne({ "StudentInfo": { "Name": "David" } });
> db.demo405.insertOne({ "StudentInfo": { "Name": "Bob" } });
> db.demo405.insertOne({ "StudentInfo": { "Name": "John" } });
คำสั่งดึงข้อมูลทั้งหมด
> db.demo405.find();
ผลลัพธ์ที่ได้
{ "_id": ObjectId("..."), "StudentInfo": { "Name": "Chris" } }
{ "_id": ObjectId("..."), "StudentInfo": { "Name": "David" } }
{ "_id": ObjectId("..."), "StudentInfo": { "Name": "Bob" } }
{ "_id": ObjectId("..."), "StudentInfo": { "Name": "John" } }
ตัวอย่างการใช้งานเพิ่มเติม
1. ค้นหาตามเงื่อนไข
> db.demo405.find({ "StudentInfo.Name": "Chris" });
2. เลือกฟิลด์เฉพาะ (Projection)
> db.demo405.find({}, { "StudentInfo.Name": 1, _id: 0 });
3. จำกัดจำนวนผลลัพธ์
> db.demo405.find().limit(2);
4. เรียงลำดับ
> db.demo405.find().sort({ "StudentInfo.Name": 1 });
Cursor Methods ที่ใช้บ่อย
| Method | คำอธิบาย |
|---|---|
| .limit(n) | จำกัดจำนวนเอกสาร |
| .skip(n) | ข้าม n เอกสารแรก |
| .sort({field: 1/-1}) | เรียงลำดับ |
| .count() | นับจำนวน (deprecated, ใช้ countDocuments()) |
| .pretty() | จัดรูปแบบ output ให้อ่านง่าย |
| .toArray() | แปลงเป็นอาร์เรย์ (ใน Shell) |
ข้อควรจำ
- find() คืน Cursor ไม่ใช่ข้อมูลจริง - ต้อง iterate เพื่อดูข้อมูล
- ใน MongoDB Shell จะ auto-iterate แสดง 20 รายการแรก
- ใช้ Projection เพื่อลดปริมาณข้อมูลที่ส่งผ่านเครือข่าย