@@ -64,7 +64,8 @@ private AstStage RenderProjectStage(
6464 out IBsonSerializer < TOutput > outputSerializer )
6565 {
6666 var partiallyEvaluatedOutput = ( Expression < Func < TGrouping , TOutput > > ) PartialEvaluator . EvaluatePartially ( _output ) ;
67- var context = TranslationContext . Create ( translationOptions ) ;
67+ var parameter = partiallyEvaluatedOutput . Parameters . Single ( ) ;
68+ var context = TranslationContext . Create ( partiallyEvaluatedOutput , initialNode : parameter , initialSerializer : inputSerializer , translationOptions : translationOptions ) ;
6869 var outputTranslation = ExpressionToAggregationExpressionTranslator . TranslateLambdaBody ( context , partiallyEvaluatedOutput , inputSerializer , asRoot : true ) ;
6970 var ( projectStage , projectSerializer ) = ProjectionHelper . CreateProjectStage ( outputTranslation ) ;
7071 outputSerializer = ( IBsonSerializer < TOutput > ) projectSerializer ;
@@ -106,7 +107,8 @@ protected override AstStage RenderGroupingStage(
106107 out IBsonSerializer < IGrouping < TValue , TInput > > groupingOutputSerializer )
107108 {
108109 var partiallyEvaluatedGroupBy = ( Expression < Func < TInput , TValue > > ) PartialEvaluator . EvaluatePartially ( _groupBy ) ;
109- var context = TranslationContext . Create ( translationOptions ) ;
110+ var parameter = partiallyEvaluatedGroupBy . Parameters . Single ( ) ;
111+ var context = TranslationContext . Create ( partiallyEvaluatedGroupBy , initialNode : parameter , initialSerializer : inputSerializer , translationOptions : translationOptions ) ;
110112 var groupByTranslation = ExpressionToAggregationExpressionTranslator . TranslateLambdaBody ( context , partiallyEvaluatedGroupBy , inputSerializer , asRoot : true ) ;
111113
112114 var valueSerializer = ( IBsonSerializer < TValue > ) groupByTranslation . Serializer ;
@@ -150,7 +152,8 @@ protected override AstStage RenderGroupingStage(
150152 out IBsonSerializer < IGrouping < AggregateBucketAutoResultId < TValue > , TInput > > groupingOutputSerializer )
151153 {
152154 var partiallyEvaluatedGroupBy = ( Expression < Func < TInput , TValue > > ) PartialEvaluator . EvaluatePartially ( _groupBy ) ;
153- var context = TranslationContext . Create ( translationOptions ) ;
155+ var parameter = partiallyEvaluatedGroupBy . Parameters . Single ( ) ;
156+ var context = TranslationContext . Create ( partiallyEvaluatedGroupBy , initialNode : parameter , initialSerializer : inputSerializer , translationOptions : translationOptions ) ;
154157 var groupByTranslation = ExpressionToAggregationExpressionTranslator . TranslateLambdaBody ( context , partiallyEvaluatedGroupBy , inputSerializer , asRoot : true ) ;
155158
156159 var valueSerializer = ( IBsonSerializer < TValue > ) groupByTranslation . Serializer ;
@@ -188,7 +191,8 @@ protected override AstStage RenderGroupingStage(
188191 out IBsonSerializer < IGrouping < TValue , TInput > > groupingOutputSerializer )
189192 {
190193 var partiallyEvaluatedGroupBy = ( Expression < Func < TInput , TValue > > ) PartialEvaluator . EvaluatePartially ( _groupBy ) ;
191- var context = TranslationContext . Create ( translationOptions ) ;
194+ var parameter = partiallyEvaluatedGroupBy . Parameters . Single ( ) ;
195+ var context = TranslationContext . Create ( partiallyEvaluatedGroupBy , initialNode : parameter , initialSerializer : inputSerializer , translationOptions : translationOptions ) ;
192196 var groupByTranslation = ExpressionToAggregationExpressionTranslator . TranslateLambdaBody ( context , partiallyEvaluatedGroupBy , inputSerializer , asRoot : true ) ;
193197 var pushElements = AstExpression . AccumulatorField ( "_elements" , AstUnaryAccumulatorOperator . Push , AstExpression . RootVar ) ;
194198 var groupBySerializer = ( IBsonSerializer < TValue > ) groupByTranslation . Serializer ;
0 commit comments