MongoDB: sort(), skip(), and limit()

These three methods are commonly used with find() to sort records, skip records, and restrict the number of records returned.

Assume we have a students collection:

db.students.find()

Example data:

{ name: "Rahul", city: "Rajkot", marks: 75 }
{ name: "Amit", city: "Ahmedabad", marks: 90 }
{ name: "Priya", city: "Surat", marks: 65 }
{ name: "Neha", city: "Rajkot", marks: 85 }
{ name: "Jay", city: "Vadodara", marks: 70 }

1. sort()

sort() is used to arrange records in ascending or descending order.

Ascending order

db.students.find().sort({marks: 1})

1 = Ascending

Result:

Priya  65
Jay    70
Rahul  75
Neha   85
Amit   90

Descending order

db.students.find().sort({marks: -1})

-1 = Descending

Result:

Amit   90
Neha   85
Rahul  75
Jay    70
Priya  65

2. skip()

skip() is used to skip a specified number of records.

db.students.find().skip(2)

This skips the first 2 records and returns the remaining records.

For example:

Record 1 → Rahul
Record 2 → Amit
Record 3 → Priya
Record 4 → Neha
Record 5 → Jay

After:

skip(2)

You get:

Priya
Neha
Jay

3. limit()

limit() is used to specify the maximum number of records to return.

db.students.find().limit(3)

Only 3 records are returned.

Rahul
Amit
Priya

4. Using sort(), skip(), and limit() together

This is especially useful for pagination.

db.students.find()
    .sort({marks: -1})
    .skip(2)
    .limit(2)

Meaning:

  1. Sort marks from highest to lowest.
  2. Skip first 2 students.
  3. Display next 2 students.

Sorted data:

Amit   90
Neha   85
Rahul  75
Jay    70
Priya  65

After skip(2):

Rahul  75
Jay    70
Priya  65

After limit(2):

Rahul  75
Jay    70

Quick Reference

MethodPurposeExample
sort()Arrange records.sort({marks: 1})
skip()Skip records.skip(2)
limit()Restrict records.limit(3)

Common combinations

// Highest marks first
db.students.find().sort({marks: -1})

// Skip first 5
db.students.find().skip(5)

// Show only 10 records
db.students.find().limit(10)

// Sort + limit
db.students.find().sort({marks: -1}).limit(3)

// Sort + skip + limit
db.students.find().sort({marks: -1}).skip(5).limit(10)

Easy way to remember:

sort() → Arrange
skip() → Ignore
limit() → Restrict

By admin