Để 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ínhlimit(), nó trả về tổng số khớp điều kiện. Dùngcursor.count()(deprecated) hoặcdb.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
skiplớn, hãy dùng keyset pagination (dựa trên _id hoặc trường sort).