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:

  1. Accessories → Wireless Mouse (25)
  2. Electronics → Laptop Pro (1200)
  3. Peripherals → Mechanical Keyboard (90), Webcam 1080p (60)
  4. 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.
Next : Deleting Documents