@@ -463,28 +463,29 @@ def _get_ordering(self):
463
463
- A tuple of ('field_name': Expression, ...) for expressions that need
464
464
to be added to extra_fields.
465
465
"""
466
- fields = {}
466
+ fields = []
467
467
sort_ordering = SON ()
468
- extra_fields = {}
468
+ extra_fields = []
469
469
idx = itertools .count (start = 1 )
470
470
for order in self .order_by_objs or []:
471
471
if isinstance (order .expression , Col ):
472
472
field_name = order .expression .as_mql (self , self .connection ).removeprefix ("$" )
473
- fields [order .expression .target .column ] = order .expression
473
+ # fields[order.expression.target.column] = order.expression
474
+ fields .append ((order .expression .target .column , order .expression ))
474
475
elif isinstance (order .expression , Ref ):
475
476
field_name = order .expression .as_mql (self , self .connection ).removeprefix ("$" )
476
477
else :
477
478
field_name = f"__order{ next (idx )} "
478
- fields [ field_name ] = order .expression
479
+ fields . append (( field_name , order .expression ))
479
480
# If the expression is ordered by NULLS FIRST or NULLS LAST,
480
481
# add a field for sorting that's 1 if null or 0 if not.
481
482
if order .nulls_first or order .nulls_last :
482
483
null_fieldname = f"__order{ next (idx )} "
483
484
condition = When (IsNull (order .expression , True ), then = Value (1 ))
484
- extra_fields [ null_fieldname ] = Case (condition , default = Value (0 ))
485
+ extra_fields . append (( null_fieldname , Case (condition , default = Value (0 )) ))
485
486
sort_ordering [null_fieldname ] = DESCENDING if order .nulls_first else ASCENDING
486
487
sort_ordering [field_name ] = DESCENDING if order .descending else ASCENDING
487
- return tuple (fields . items ()) , sort_ordering , tuple (extra_fields . items () )
488
+ return tuple (fields ) , sort_ordering , tuple (extra_fields )
488
489
489
490
def get_where (self ):
490
491
return self .where
0 commit comments