Harsha Bhat
Harsha Bhat

Reputation: 738

Pagination with MongoDB in Node.js (With Sorting)

Using suggestions from here and here, I'm trying to implement a scalable, paginating, stateless REST API in the following way:

//Page 1
db.users.find().limit(pageSize);
//Find the id of the last document in this page
last_id = ...

//Page 2
users = db.users.find({'_id'> last_id}).limit(pageSize);
//Update the last id with the id of the last document in this page
last_id = ...

It works in most cases, but the problem is I have to sort a list of videos according to view count and then try to paginate.

// Page 2
videos = db.videos.find({'viewCount'< last_view_count}).sort({viewCount : 'descending'}).limit(pageSize);

This does not work since there might be multiple items with same view count and some items will miss out when we do 'viewCount'< last_view_count

Any ideas on how to solve this problem would be appreciated :)

Upvotes: 0

Views: 2916

Answers (1)

weiyin
weiyin

Reputation: 6979

You can sort and filter on a combination of fields that together uniquely identify documents. For example, sort on {viewcount: 'descending', _id: 'ascending'}, and filter on {viewcount <= last_view_count, _id > last_id}.

Upvotes: 4

Related Questions