ChangeStream Filtering / Matching

I have the following filter goal I’m trying to achieve: Presence of any one of the fields in UpdateDescription.UpdateFields and an operation type

To achieve the goal, I am trying to use the Expression type parameter overload for PipelineDefinition.Match extension function as follows:

var pipeline = new EmptyPipelineDefinition<ChangeStreamDocument<BsonDocument>>()
    .Match(
(ChangeStreamDocument<BsonDocument> doc) =>
     doc.UpdateDescription.UpdatedFields.Any(c => fieldNameList.Contains(c.Name))
     &&
     doc.OperationType == _operationType);

But I end up getting the following error:
System.NotSupportedException: 'Serializer for MongoDB.Driver.ChangeStreamUpdateDescription must implement IBsonDocumentSerializer to be used with LINQ.'

I tried to provide a new ChangeStreamDocumentSerializer instance to the EmptyPipelineDefinition along with the match filter, but that too came back with the same error.

How do I use the UpdateDescription in my LINQ filter?

I ended up building FilterDefinition along with FieldDefinition to solve the problem as depicted:

builder.Ne($"updateDescription.updatedFields.{memberExpression.Member.Name}", BsonNull.Value)

I used loops to construct a final solution as such:

            var dynamicFilter = builder.Empty;
            var fieldFilter = new List<FilterDefinition<ChangeStreamDocument<BsonDocument>>>();
            var operationFilter = new List<FilterDefinition<ChangeStreamDocument<BsonDocument>>>();

            foreach (var field in _fields)
            {
                var memberExpression = (MemberExpression)field.Body;

                fieldFilter.Add(builder
                    .Ne($"updateDescription.updatedFields.{memberExpression.Member.Name}", BsonNull.Value));
            }

            foreach (var operationType in _operationTypes)
            {
                operationFilter.Add(builder.Eq(c => c.OperationType, operationType));
            }

            dynamicFilter = builder.And(builder.Or(fieldFilter), builder.Or(operationFilter));

I would have preferred to use the typed variant instead of the filter definition string for compile time safety, but I ran into yet another manifestation of the original issue reported in this post. I believe those string-based field definitions are case sensitive. So tread with caution when using this solution.