@@ -197,24 +197,24 @@ def get_transform(self, name):
197197 f"{ suggestion } "
198198 )
199199
200- def as_mql_expr (self , compiler , connection ):
200+ def _get_target_path (self ):
201201 previous = self
202202 key_transforms = []
203203 while isinstance (previous , KeyTransform ):
204204 key_transforms .insert (0 , previous .key_name )
205205 previous = previous .lhs
206- mql = previous .as_mql (compiler , connection )
206+ return key_transforms , previous
207+
208+ def as_mql_expr (self , compiler , connection ):
209+ key_transforms , parent_field = self ._get_target_path ()
210+ mql = parent_field .as_mql (compiler , connection )
207211 for key in key_transforms :
208212 mql = {"$getField" : {"input" : mql , "field" : key }}
209213 return mql
210214
211215 def as_mql_path (self , compiler , connection ):
212- previous = self
213- key_transforms = []
214- while isinstance (previous , KeyTransform ):
215- key_transforms .insert (0 , previous .key_name )
216- previous = previous .lhs
217- mql = previous .as_mql (compiler , connection , as_path = True )
216+ key_transforms , parent_field = self ._get_target_path ()
217+ mql = parent_field .as_mql (compiler , connection , as_path = True )
218218 mql_path = "." .join (key_transforms )
219219 return f"{ mql } .{ mql_path } "
220220
0 commit comments