Skip to content

Commit bb93334

Browse files
committed
CSHARP-4589: Fix issue with multiple GroupJoins.
1 parent 164667d commit bb93334

File tree

2 files changed

+352
-1
lines changed

2 files changed

+352
-1
lines changed

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,22 @@ public static AstPipeline Translate(TranslationContext context, MethodCallExpres
3838
{
3939
var outerExpression = arguments[0];
4040
var pipeline = ExpressionToPipelineTranslator.Translate(context, outerExpression);
41+
42+
AstExpression outerAst;
43+
var rootVar = AstExpression.Var("ROOT", isCurrent: true);
4144
var outerSerializer = pipeline.OutputSerializer;
45+
if (outerSerializer is IWrappedValueSerializer wrappedSerializer)
46+
{
47+
outerAst = AstExpression.GetField(rootVar, wrappedSerializer.FieldName);
48+
outerSerializer = wrappedSerializer.ValueSerializer;
49+
}
50+
else
51+
{
52+
outerAst = rootVar;
53+
}
4254

4355
var wrapOuterStage = AstStage.Project(
44-
AstProject.Set("_outer", AstExpression.Var("ROOT")),
56+
AstProject.Set("_outer", outerAst),
4557
AstProject.ExcludeId());
4658
var wrappedOuterSerializer = WrappedValueSerializer.Create("_outer", outerSerializer);
4759

0 commit comments

Comments
 (0)