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

การทำงานกับคำสั่ง find() ใน MongoDB

พื้นฐานการใช้งาน 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 เพื่อลดปริมาณข้อมูลที่ส่งผ่านเครือข่าย