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

Chia trang truy vấn MongoDB - Bỏ qua 5 giá trị (skip)

Để bỏ qua (skip) các giá trị trong MongoDB, sử dụng skip() kết hợp limit(). Để lấy 5 giá trị mỗi trang, dùng limit(5).

Tạo collection 8 document

> db.demo633.insertOne({"Value":10});
> db.demo633.insertOne({"Value":20});
> db.demo633.insertOne({"Value":30});
> db.demo633.insertOne({"Value":40});
> db.demo633.insertOne({"Value":50});
> db.demo633.insertOne({"Value":60});
> db.demo633.insertOne({"Value":70});
> db.demo633.insertOne({"Value":80});

Hiển thị tất cả

> db.demo633.find();

Kết quả (theo thứ tự insert):

Value: 10, 20, 30, 40, 50, 60, 70, 80

Phân trang: Lấy trang 2 (bỏ 5, lấy 5)

> var dividePage = 2;
> db.demo633.find().skip((dividePage-1)*5).limit(5);

Kết quả (trang 2 - 3 document cuối):

{
  "_id" : ObjectId("5e9c0bf36c954c74be91e6c6"), "Value" : 60
}
{
  "_id" : ObjectId("5e9c0bf86c954c74be91e6c7"), "Value" : 70
}
{
  "_id" : ObjectId("5e9c0bfa6c954c74be91e6c8"), "Value" : 80
}

Công thức phân trang:

skip((pageNumber - 1) * pageSize).limit(pageSize)
  • Trang 1: skip(0).limit(5) → Value 10-50
  • Trang 2: skip(5).limit(5) → Value 60-80
  • Trang 3: skip(10).limit(5) → rỗng

Lưu ý hiệu năng: skip() chậm trên collection lớn vì phải duyệt qua các document bị bỏ qua. Với dữ liệu lớn, nên dùng cursor-based pagination (lọc theo _id hoặc timestamp của document cuối trang trước).