Sorting by multiple fields helps you organize data clearly when one field alone is not enough. It lets you order results by more than one rule.
Sorting by multiple fields in MongoDB
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
MongoDB
db.collection.find().sort({ field1: 1, field2: -1 })Use 1 for ascending order and -1 for descending order.
The order of fields in the sort object matters; sorting happens in that sequence.
Examples
MongoDB
db.students.find().sort({ grade: 1, name: 1 })MongoDB
db.products.find().sort({ category: 1, price: -1 })MongoDB
db.events.find().sort({ date: 1, startTime: 1 })Sample Program
This inserts four employees and then sorts them by department ascending, and within each department by join year ascending.
MongoDB
db.employees.insertMany([
{ name: "Alice", department: "HR", joinYear: 2020 },
{ name: "Bob", department: "HR", joinYear: 2019 },
{ name: "Charlie", department: "IT", joinYear: 2021 },
{ name: "David", department: "IT", joinYear: 2019 }
])
const sortedEmployees = db.employees.find().sort({ department: 1, joinYear: 1 }).toArray()
sortedEmployeesImportant Notes
Sorting by multiple fields is like sorting a phone book by last name, then first name.
If two documents have the same value in the first field, the second field decides their order.
Summary
Sorting by multiple fields lets you organize data with more detail.
Use 1 for ascending and -1 for descending order for each field.
The order of fields in the sort object controls the sorting priority.
Practice
1. What does sorting by multiple fields in MongoDB allow you to do?
easy
Solution
Step 1: Understand sorting purpose
Sorting arranges documents in order based on field values.Step 2: Recognize multiple fields effect
Sorting by multiple fields means ordering by the first field, then by the second if the first is equal, and so on.Final Answer:
Organize data by more than one field in a specific order -> Option AQuick Check:
Sorting by multiple fields = Organize data by multiple fields [OK]
Hint: Sorting multiple fields orders by priority fields [OK]
Common Mistakes:
- Confusing sorting with filtering
- Thinking sorting creates or deletes fields
- Assuming sorting only works on one field
2. Which of the following is the correct syntax to sort documents by
age ascending and name descending in MongoDB?easy
Solution
Step 1: Recall sort syntax
MongoDB uses 1 for ascending and -1 for descending order in sort objects.Step 2: Match fields and order
Sorting by age ascending (1) and name descending (-1) matches db.collection.find().sort({age: 1, name: -1}).Final Answer:
db.collection.find().sort({age: 1, name: -1}) -> Option CQuick Check:
age:1, name:-1 syntax = db.collection.find().sort({age: 1, name: -1}) [OK]
Hint: Use 1 for ascending, -1 for descending in sort object [OK]
Common Mistakes:
- Using strings like 'asc' or 'desc' instead of 1 or -1
- Mixing order of fields incorrectly
- Using wrong signs for ascending/descending
3. Given the collection documents:
What is the order of documents after running
{"name": "Alice", "age": 30, "score": 85}
{"name": "Bob", "age": 25, "score": 90}
{"name": "Alice", "age": 30, "score": 95}What is the order of documents after running
db.collection.find().sort({name: 1, age: -1, score: 1})?medium
Solution
Step 1: Sort by name ascending
Names sorted ascending: "Alice" before "Bob".Step 2: Sort by age descending within same name
Both "Alice" have age 30, so order stays same.Step 3: Sort by score ascending within same name and age
Scores 85 then 95 for "Alice".Final Answer:
[{name: "Alice", age: 30, score: 85}, {name: "Alice", age: 30, score: 95}, {name: "Bob", age: 25, score: 90}] -> Option DQuick Check:
Sort by name↑, age↓, score↑ = [{name: "Alice", age: 30, score: 85}, {name: "Alice", age: 30, score: 95}, {name: "Bob", age: 25, score: 90}] [OK]
Hint: Sort priority follows field order in sort object [OK]
Common Mistakes:
- Ignoring order of fields in sort
- Mixing ascending and descending incorrectly
- Assuming score sorts descending by default
4. Identify the error in this MongoDB sort query:
db.collection.find().sort({age: 1, name: 2})medium
Solution
Step 1: Check valid sort values
MongoDB accepts only 1 (ascending) or -1 (descending) as sort values.Step 2: Identify invalid value
Value 2 is invalid and causes syntax error.Final Answer:
Using 2 instead of -1 or 1 for sorting order -> Option AQuick Check:
Sort values must be 1 or -1 [OK]
Hint: Sort values must be 1 or -1, never other numbers [OK]
Common Mistakes:
- Using numbers other than 1 or -1
- Confusing sort object syntax
- Assuming 2 means descending
5. You want to sort a collection by
department ascending, then by salary descending, but only for employees with the same department. Which MongoDB query correctly achieves this?hard
Solution
Step 1: Understand sorting priority
Sorting by department ascending means all employees grouped by department alphabetically.Step 2: Sort salary descending within each department
Within each department group, employees are ordered by salary from highest to lowest.Step 3: Match correct sort order
db.employees.find().sort({department: 1, salary: -1}) matches department:1 (ascending) and salary:-1 (descending).Final Answer:
db.employees.find().sort({department: 1, salary: -1}) -> Option BQuick Check:
Sort by department↑ then salary↓ = db.employees.find().sort({department: 1, salary: -1}) [OK]
Hint: Order fields in sort by priority, use 1 or -1 for direction [OK]
Common Mistakes:
- Reversing field order in sort object
- Using wrong sort directions
- Assuming sorting salary first groups by salary only
