1414*/
1515
1616using System . Linq . Expressions ;
17- using MongoDB . Bson . Serialization ;
1817using MongoDB . Driver . Linq . Linq3Implementation . Ast ;
1918using MongoDB . Driver . Linq . Linq3Implementation . Ast . Expressions ;
2019using MongoDB . Driver . Linq . Linq3Implementation . Ast . Stages ;
@@ -41,16 +40,15 @@ public static AstPipeline Translate(TranslationContext context, MethodCallExpres
4140 ClientSideProjectionHelper . ThrowIfClientSideProjection ( expression , pipeline , method ) ;
4241
4342 AstExpression outerAst ;
44- var rootVar = AstExpression . Var ( "ROOT" , isCurrent : true ) ;
4543 var outerSerializer = pipeline . OutputSerializer ;
4644 if ( outerSerializer is IWrappedValueSerializer wrappedSerializer )
4745 {
48- outerAst = AstExpression . GetField ( rootVar , wrappedSerializer . FieldName ) ;
46+ outerAst = AstExpression . GetField ( AstExpression . RootVar , wrappedSerializer . FieldName ) ;
4947 outerSerializer = wrappedSerializer . ValueSerializer ;
5048 }
5149 else
5250 {
53- outerAst = rootVar ;
51+ outerAst = AstExpression . RootVar ;
5452 }
5553
5654 var wrapOuterStage = AstStage . Project (
@@ -74,20 +72,19 @@ public static AstPipeline Translate(TranslationContext context, MethodCallExpres
7472 @as : "_inner" ) ;
7573
7674 var resultSelectorLambda = ExpressionHelper . UnquoteLambda ( arguments [ 4 ] ) ;
77- var root = AstExpression . Var ( "ROOT" , isCurrent : true ) ;
7875 var outerParameter = resultSelectorLambda . Parameters [ 0 ] ;
79- var outerField = AstExpression . GetField ( root , "_outer" ) ;
76+ var outerField = AstExpression . GetField ( AstExpression . RootVar , "_outer" ) ;
8077 var outerSymbol = context . CreateSymbol ( outerParameter , outerField , outerSerializer ) ;
8178 var innerParameter = resultSelectorLambda . Parameters [ 1 ] ;
82- var innerField = AstExpression . GetField ( root , "_inner" ) ;
79+ var innerField = AstExpression . GetField ( AstExpression . RootVar , "_inner" ) ;
8380 var ienumerableInnerSerializer = IEnumerableSerializer . Create ( innerSerializer ) ;
8481 var innerSymbol = context . CreateSymbol ( innerParameter , innerField , ienumerableInnerSerializer ) ;
8582 var resultSelectorContext = context . WithSymbols ( outerSymbol , innerSymbol ) ;
8683 var resultSelectorTranslation = ExpressionToAggregationExpressionTranslator . Translate ( resultSelectorContext , resultSelectorLambda . Body ) ;
87- var ( projectStage , newOutputSerializer ) = ProjectionHelper . CreateProjectStage ( resultSelectorTranslation ) ;
84+ var ( projectStage , projectSerializer ) = ProjectionHelper . CreateProjectStage ( resultSelectorTranslation ) ;
8885
8986 pipeline = pipeline . AddStages (
90- newOutputSerializer ,
87+ projectSerializer ,
9188 wrapOuterStage ,
9289 lookupStage ,
9390 projectStage ) ;
0 commit comments