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

การใช้ LIMIT ในการคิวรี MongoDB

จำกัดจำนวนเอกสารที่คืนกลับด้วยเมธอด limit()

เมธอด limit() ใช้สำหรับจำกัดจำนวนเอกสารสูงสุดที่ cursor จะคืนกลับมา เหมาะสำหรับการแบ่งหน้า (pagination) หรือดึงตัวอย่างข้อมูล

ตัวอย่างข้อมูลทดสอบ

> db.demo58.insertOne({ "Name": "David" });
> db.demo58.insertOne({ "Name": "David" });
> db.demo58.insertOne({ "Name": "David" });
> db.demo58.insertOne({ "Name": "Mike" });

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

> db.demo58.find();

ผลลัพธ์:

{ "_id": ObjectId("..."), "Name": "David" }
{ "_id": ObjectId("..."), "Name": "David" }
{ "_id": ObjectId("..."), "Name": "David" }
{ "_id": ObjectId("..."), "Name": "Mike" }

คำสั่งใช้ limit() ร่วมกับตัวแปร

> v = 2;
> d = db.demo58.find({ "Name": "David" }).limit(v + 1);

ผลลัพธ์: คืนเอกสาร David 3 รายการ (v+1 = 3)

ตรวจสอบว่ามีข้อมูลมากกว่าที่ limit หรือไม่

> m = d.size() > v;

ผลลัพธ์: true (เพราะมี 3 รายการ > 2)

คำอธิบายเทคนิคนี้

โค้ดตัวอย่างใช้เทคนิค limit(v+1) เพื่อตรวจสอบว่ามีข้อมูลมากกว่าที่จะแสดงต่อหน้าหรือไม่ (hasMore) ซึ่งเป็นรูปแบบที่พบบ่อยในการ implement pagination:

  • ขอข้อมูลมากกว่าที่จะแสดง 1 รายการ
  • ถ้าจำนวนที่ได้ > limit แสดงว่ามีหน้าถัดไป
  • แสดงเฉพาะ limit รายการแรกให้ผู้ใช้

รูปแบบมาตรฐานสำหรับ Pagination

> db.collection.find(query).sort({ _id: 1 }).skip(page * limit).limit(limit);

ควรใช้ sort() เสมอเพื่อให้ลำดับคงที่