Skip to content

Commit 120e90d

Browse files
committed
CSHARP-5357: Refactor GroupJoin translator.
1 parent 0aa5f62 commit 120e90d

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

src/MongoDB.Driver/Linq/Linq3Implementation/Translators/ExpressionToPipelineTranslators/GroupJoinMethodToPipelineTranslator.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
*/
1515

1616
using System.Linq.Expressions;
17-
using MongoDB.Bson.Serialization;
1817
using MongoDB.Driver.Linq.Linq3Implementation.Ast;
1918
using MongoDB.Driver.Linq.Linq3Implementation.Ast.Expressions;
2019
using 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

Comments
 (0)