Nâng CaoMongoDB iconMongoDB

Pagination trong MongoDB nên dùng skip/limit hay cursor?

skip/limit đơn giản nhưng chậm khi offset lớn vì database vẫn phải bỏ qua nhiều documents. Cursor/keyset pagination dùng sort key ổn định như createdAt + _id, hiệu quả hơn cho feed lớn.

Ví dụ:

javascript
db.posts.find({ createdAt: { $lt: lastCreatedAt } })
  .sort({ createdAt: -1, _id: -1 })
  .limit(20)

Cần index khớp sort/filter.

Với sort key trùng nhau, thêm _id làm tie-breaker để tránh mất/trùng records.

Xem toàn bộ MongoDB cùng filter theo level & chủ đề con.

Mở danh sách MongoDB