MongoDB: Sorting Documents
Subject: nodejs
MongoDB: Sorting Documents
Sorting documents in MongoDB arranges query results based on specified field values. This improves data presentation and analysis.
Why Sort Documents?
- Ordered Lists: Alphabetical, chronological, or numerical display.
- Ranking: Show top performers or most relevant results.
- Pagination: Ensure consistent ordering across pages.
- Readability: Enhance user understanding by structuring results.
Core Concepts
- Sort Specification: Passed to
.sort()
as an object (e.g.,{ name: 1 }
). - Sort Order:
1
: Ascending (A → Z, 0 → 9)-1
: Descending (Z → A, 9 → 0)
- Tie-breaking: If primary sort fields are equal, secondary fields (if provided) resolve order.
Node.js Examples: Sorting Documents
Sample Data (products
collection):
1. Sort by Single Field (Ascending)
Sort products alphabetically by name
.
Output: Ordered from A to Z by name
2. Sort by Single Field (Descending)
Sort products by price
(highest first).
Output: Highest to lowest by price
3. Sort by Multiple Fields (Compound Sort)
Sort by category
(ascending), then price
(descending) within each category.
Explanation:
- First sort by
category
alphabetically. - Within each category, sort by
price
from high to low.
Expected Output Order:
- Accessories → Wireless Mouse (25)
- Electronics → Laptop Pro (1200)
- Peripherals → Mechanical Keyboard (90), Webcam 1080p (60)
- Storage → External HDD (120)
Performance Considerations
- Indexes: Speed up sorting on large datasets. Use indexes on frequently sorted fields.
- Memory Usage: Without an index, MongoDB may perform an in-memory sort. If this exceeds the limit, data may spill to disk, slowing performance.
- Compound Indexes: Great for compound sorts. Example:
Key Takeaways
- Use
.sort({ field: 1 or -1 })
for ordering results. - Sorting improves UI, analysis, and consistency in pagination.
- Compound sorting defines secondary order for tie-breaking.
- Indexing is essential for performant sorts on large data sets.