Welcome to TheCodingCollege.com, your go-to destination for coding tutorials and insights. In this article, we’ll explore the $sort stage in MongoDB’s aggregation pipeline. This essential feature helps you organize and analyze your data effectively.
What is the $sort Stage?
The $sort stage in MongoDB’s aggregation pipeline orders documents based on specified fields. Sorting is crucial for tasks like ranking, organizing datasets, and creating ordered views of data for analysis or display.
Syntax of $sort
The $sort stage has a straightforward syntax:
{ $sort: { <field1>: <order>, <field2>: <order>, ... } }<field>: The field to sort by.<order>: Use1for ascending order and-1for descending order.
Example 1: Basic Sorting
Suppose you have a products collection:
[
{ "name": "Laptop", "price": 1200 },
{ "name": "Phone", "price": 800 },
{ "name": "Tablet", "price": 600 },
{ "name": "Monitor", "price": 300 }
]Task: Sort the products by price in ascending order.
db.products.aggregate([
{ $sort: { price: 1 } }
])Output:
[
{ "name": "Monitor", "price": 300 },
{ "name": "Tablet", "price": 600 },
{ "name": "Phone", "price": 800 },
{ "name": "Laptop", "price": 1200 }
]Example 2: Sorting in Descending Order
Task: Sort the products by price in descending order.
db.products.aggregate([
{ $sort: { price: -1 } }
])Output:
[
{ "name": "Laptop", "price": 1200 },
{ "name": "Phone", "price": 800 },
{ "name": "Tablet", "price": 600 },
{ "name": "Monitor", "price": 300 }
]Example 3: Sorting by Multiple Fields
When sorting by multiple fields, MongoDB processes the fields in the specified order.
Task: Sort by price in ascending order and by name alphabetically.
db.products.aggregate([
{ $sort: { price: 1, name: 1 } }
])Output:
[
{ "name": "Monitor", "price": 300 },
{ "name": "Tablet", "price": 600 },
{ "name": "Phone", "price": 800 },
{ "name": "Laptop", "price": 1200 }
]Use Cases for $sort
- Ranking: Display top-performing products or employees.
- Pagination: Combine
$sortwith$skipand$limitfor paginated results. - Organized Data Display: Show data in ascending or descending order for dashboards or reports.
Best Practices for Using $sort
- Index Fields Used in Sorting: Improve query performance by indexing the fields you sort on.
- Combine with Other Stages: Use
$matchto filter data before sorting to reduce overhead. - Limit Output for Large Datasets: Combine
$sortwith$limitto process only necessary documents.
Real-World Application
E-commerce:
Task: Display the top 5 most expensive products.
db.products.aggregate([
{ $sort: { price: -1 } },
{ $limit: 5 }
])This query ensures users see only the top 5 high-value products, improving their browsing experience.
Conclusion
The $sort stage in MongoDB’s aggregation pipeline is a powerful tool for organizing and analyzing data. Whether you’re working with e-commerce products, financial records, or user profiles, $sort allows you to create meaningful, ordered datasets.