diff --git a/src/mongo/db/query/planner_analysis.cpp b/src/mongo/db/query/planner_analysis.cpp
index d0c08e10c3adc..a557f9a59f2eb 100644
--- a/src/mongo/db/query/planner_analysis.cpp
+++ b/src/mongo/db/query/planner_analysis.cpp
@@ -1036,6 +1036,11 @@ bool QueryPlannerAnalysis::explodeForSort(const CanonicalQuery& query,
             if (!isOilExplodable(oil, iet)) {
                 break;
             }
+            // We need not explode the fields in the desired sort order
+            auto elem = *kpIt;
+            if (elem.fieldNameStringData() == desiredSort.begin()->fieldNameStringData()) {
+                break;
+            }
             numScans *= oil.intervals.size();
             kpIt.next();
             ++boundsIdx;