developKinberg
developKinberg

Reputation: 383

mongoose: get documents from to certain position

Currently I working on a news feed and want to fetch more data when the user scrolls down the list. At first I get a specific amount of data from my server sorted by date like this ->

    var newsFeed = await NewsFeed.find().sort({createdDate: 'desc'}).limit(parseInt(amount));

When the user know reach the end of the list, I want to load more data by simply increase the amount variable in my api call. With the current call I also get the first elements that I already have. So is there a solution to get like the first 10 documents sorted by date and when from 11 - 20 and so on ?

Upvotes: 0

Views: 457

Answers (1)

J.F.
J.F.

Reputation: 15207

If your documents are sorted you can use skip.

For example, if you have 10 objects, like this:

{ id:1 }, { id:2 }, { id:3 }, { id:4 } , ... { id:n}

You can query the number of documents you want in this way:

var find = await model.find({}).sort({id:1}).limit(amount)

Then, to get the next values, you can do this query:

find = await model.find({}).sort({id:1}).skip(amount).limit(amount)

The first find (assuming amount is, for example, 2), will return documents wit id 1 and 2.
The second find will return id 3 and 4.

Also, check this stack overflow question and this docs from Mongo.

Upvotes: 1

Related Questions