-
Type: Bug
-
Resolution: Fixed
-
Priority: Unknown
-
Affects Version/s: None
-
Component/s: None
-
None
-
Not Needed
-
Summary
When trying to join 3 or more collection with left join in single query the driver gives "Operation is not valid due to the current state of the object" error.
MongoDB Version: 5.0.3
.NET Driver Version: 2.18.0
Linq Provider: V3
How to Reproduce
1) Create a linq left join query having 3 or more collections
2) Try to execute it.
-
-
-
-
-
- Linq Query -----*
-
-
-
-
var teamDetailsQuery = (from team in _DBContext.Teams.AsQueryable() join teamAllianceMappingsList in DBContext.TeamAllianceMappings.AsQueryable() on team.TeamId equals teamAllianceMappingsList.TeamId into teamAllianceMappingsListTemp from allinceMapping in teamAllianceMappingsListTemp.DefaultIfEmpty() join organizationAdminsList in _DBContext.OrganizationAdmins.AsQueryable() on team.OrganizationId equals organizationAdminsList.OrganizationId into organizationAdminsListTemp from organizationAdmin in organizationAdminsListTemp.DefaultIfEmpty() join usersList in _AGLMongoDBContext.Users.AsQueryable() on organizationAdmin.UserId equals usersList.UserId into usersListTemp from organizationUser in usersListTemp.DefaultIfEmpty() select new { TeamId = team.TeamId, TeamName = team.TeamName, OrganizationLogo = (organizationUser != null ? organizationUser.ProfileImage : team.OrganizationLogo), OrganizationName = team.OrganizationName, AllianceTeamId = allinceMapping.AllianceTeamId }).AsQueryable(); var teamDetails = teamDetailsQuery.FirstOrDefault();
-
-
-
-
-
- Error -----*
-
-
-
-
System.InvalidOperationException: Operation is not valid due to the current state of the object. at MongoDB.Driver.Linq.Linq3Implementation.Serializers.WrappedValueSerializer`1.TryGetMemberSerializationInfo(String memberName, BsonSerializationInfo& serializationInfo) at MongoDB.Driver.Linq.Linq3Implementation.Misc.DocumentSerializerHelper.HasFieldInfo(IBsonSerializer serializer, String memberName) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators.MemberExpressionToAggregationExpressionTranslator.Translate(TranslationContext context, MemberExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators.MemberExpressionToAggregationExpressionTranslator.Translate(TranslationContext context, MemberExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToAggregationExpressionTranslators.MemberExpressionToAggregationExpressionTranslator.Translate(TranslationContext context, MemberExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Misc.LambdaExpressionExtensions.GetFieldPath(LambdaExpression fieldSelectorLambda, TranslationContext context, IBsonSerializer parameterSerializer) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.GroupJoinMethodToPipelineTranslator.Translate(TranslationContext context, MethodCallExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.SelectManyMethodToPipelineTranslator.Translate(TranslationContext context, MethodCallExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.GroupJoinMethodToPipelineTranslator.Translate(TranslationContext context, MethodCallExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.SelectManyMethodToPipelineTranslator.Translate(TranslationContext context, MethodCallExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators.ExpressionToExecutableQueryTranslator.Translate[TDocument,TOutput](MongoQueryProvider`1 provider, Expression expression) at MongoDB.Driver.Linq.Linq3Implementation.MongoQuery`2.ToString()
-
-
-
-
-
- Expression -----*
{agl.Teams.Aggregate([]).GroupJoin(agl.TeamAllianceMappings.Aggregate([]), team => team.TeamId, teamAllianceMappingsList => teamAllianceMappingsList.TeamId, (team, teamAllianceMappingsListTemp) => new <>f__AnonymousType307`2(team = team, teamAllianceMappingsListTemp = teamAllianceMappingsListTemp)).SelectMany(<>h__TransparentIdentifier0 => <>h__TransparentIdentifier0.teamAllianceMappingsListTemp.DefaultIfEmpty(), (<>h__TransparentIdentifier0, allinceMapping) => new <>f__AnonymousType308`2(<>h__TransparentIdentifier0 = <>h__TransparentIdentifier0, allinceMapping = allinceMapping)).GroupJoin(agl.OrganizationAdmins.Aggregate([]), <>h__TransparentIdentifier1 => <>h__TransparentIdentifier1.<>h__TransparentIdentifier0.team.OrganizationId, organizationAdminsList => Convert(organizationAdminsList.OrganizationId, Nullable`1), (<>h__TransparentIdentifier1, organizationAdminsListTemp) => new <>f__AnonymousType309`2(<>h__TransparentIdentifier1 = <>h__TransparentIdentifier1, organizationAdminsListTemp = organizationAdminsListTemp)).SelectMany(<>h__TransparentIdentifier2 => <>h__TransparentIdentifier2.organizationAdminsListTemp.DefaultIfEmpty(), (<>h__TransparentIdentifier2, organizationAdmin) => new <>f__AnonymousType310`2(<>h__TransparentIdentifier2 = <>h__TransparentIdentifier2, organizationAdmin = organizationAdmin)).GroupJoin(agl.Users.Aggregate([]), <>h__TransparentIdentifier3 => <>h__TransparentIdentifier3.organizationAdmin.UserId, usersList => usersList.UserId, (<>h__TransparentIdentifier3, usersListTemp) => new <>f__AnonymousType311`2(<>h__TransparentIdentifier3 = <>h__TransparentIdentifier3, usersListTemp = usersListTemp)).SelectMany(<>h__TransparentIdentifier4 => <>h__TransparentIdentifier4.usersListTemp.DefaultIfEmpty(), (<>h__TransparentIdentifier4, organizationUser) => new <>f__AnonymousType312`5(TeamId = <>h__TransparentIdentifier4.<>h__TransparentIdentifier3.<>h__TransparentIdentifier2.<>h__TransparentIdentifier1.<>h__TransparentIdentifier0.team.TeamId, TeamName = <>h__TransparentIdentifier4.<>h__TransparentIdentifier3.<>h__TransparentIdentifier2.<>h__TransparentIdentifier1.<>h__TransparentIdentifier0.team.TeamName, OrganizationLogo = IIF((organizationUser != null), organizationUser.ProfileImage, <>h__TransparentIdentifier4.<>h__TransparentIdentifier3.<>h__TransparentIdentifier2.<>h__TransparentIdentifier1.<>h__TransparentIdentifier0.team.OrganizationLogo), OrganizationName = <>h__TransparentIdentifier4.<>h__TransparentIdentifier3.<>h__TransparentIdentifier2.<>h__TransparentIdentifier1.<>h__TransparentIdentifier0.team.OrganizationName, AllianceTeamId = <>h__TransparentIdentifier4.<>h__TransparentIdentifier3.<>h__TransparentIdentifier2.<>h__TransparentIdentifier1.allinceMapping.AllianceTeamId))}
Additional Background
- Expression -----*
-
-
-
-