Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Truy vấn MongoDB với LIMIT để giới hạn kết quả

Để giới hạn số lượng tài liệu trả về trong MongoDB, bạn sử dụng phương thức limit() trên con trỏ (cursor) trả về bởi find(). Điều này cực kỳ quan trọng cho phân trang (pagination) và tránh quá tải bộ nhớ khi collection lớn.

1. Tạo bộ sưu tập và chèn dữ liệu

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

2. Xem toàn bộ dữ liệu

> db.demo58.find();

Kết quả: 4 tài liệu (3 David, 1 Mike).

3. Giới hạn kết quả với limit()

Ví dụ: Lấy tối đa 3 tài liệu có Name = "David" (v = 2, limit = v+1 = 3):

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

Kết quả cursor sẽ chứa tối đa 3 tài liệu đầu tiên khớp điều kiện.

4. Kiểm tra có còn dữ liệu không (để phân trang)

> var hasMore = cursor.size() > v; // true nếu còn dữ liệu

Lưu ý quan trọng:

  • cursor.size() không tính limit(), nó trả về tổng số khớp điều kiện. Dùng cursor.count() (deprecated) hoặc db.collection.countDocuments() cho chính xác.
  • Phân trang chuẩn: find().skip(pageSize * (page-1)).limit(pageSize).
  • Với collection lớn, tránh skip lớn, hãy dùng keyset pagination (dựa trên _id hoặc trường sort).