madu
madu

Reputation: 5450

MongoDB: How to retrieve a large number of documents in successive queries

This is what I want to achieve:

I have a collection with a large number of documents. A user will query a certain field and this will return a large number of documents. But for bandwidth/processing reasons, I don't want to get all documents and send them to user (browser) at once.

Lets say the user makes a GET request with a search field. This would give 1000 results. But I want to only send the first 10 to the user. And then the user would request for the next 10, and so on.

Is there a way to achieve this in Mongodb? Can I query with a certain counter and increment it in successive queries?

What is a good way to achieve this mechanism?

Thank you.

Upvotes: 0

Views: 1319

Answers (2)

KibGzr
KibGzr

Reputation: 2093

MongoDB natively supports the paging operation using the skip() and limit() commands.

//first 10 results -> page 1
collection.find().limit (10)

//next 10 results -> page 2
collection.find().skip(10).limit(10)

//next 10 results -> page 3
collection.find().skip(20).limit(10)

Upvotes: 2

Manoj Ojha
Manoj Ojha

Reputation: 371

Here number represents 1,2,3,..... means first 10 records if you are giving number = 1.

db.students.find().skip(number > 0 ? ((number-1)*10) : 0).limit(10);
//first 10 records ,number = 1
db.students.find().skip(1 > 0 ? ((1-1)*10) : 0).limit(10);

//next  10 records ,number = 2
db.students.find().skip(2 > 0 ? ((2-1)*10) : 0).limit(10);

Upvotes: 1

Related Questions