xxxxxxxxxx
const noOfRecordsPerPage = 10; // number of records par page
const userData = await database
.collection("users")
.find() // search on all data
.sort({ _id: -1 }) // reverse the data to get latest record first
.skip(parseInt(page) * noOfRecordsPerPage) // skip the records base on page number
.limit(noOfRecordsPerPage) // no of record par page
.toArray(); // turn the records into array
xxxxxxxxxx
db.Order.aggregate([
{$match: {company_id: ObjectId("54c0...") } },
{$sort: {order_number: -1 } },
{$setWindowFields: {output: {totalCount: {$count: {}}}}}
{$skip: 20 },
{$limit: 10 }
])
xxxxxxxxxx
db.Order.aggregate([
{ '$match' : { "company_id" : ObjectId("54c0...") } },
{ '$sort' : { 'order_number' : -1 } },
{ '$facet' : {
metadata: [ { $count: "total" }, { $addFields: { page: NumberInt(3) } } ],
data: [ { $skip: 20 }, { $limit: 10 } ] // add projection here wish you re-shape the docs
} }
] )
xxxxxxxxxx
def skiplimit(page_size, page_num):
"""returns a set of documents belonging to page number `page_num`
where size of each page is `page_size`.
"""
# Calculate number of documents to skip
skips = page_size * (page_num - 1)
# Skip and limit
cursor = db['students'].find().skip(skips).limit(page_size)
# Return documents
return [x for x in cursor]