MongoDB C# Driver FilterDefinition.Inject() issue

Hello everyone, I believe that I have found an issue related to the Inject() function of the FilterDefinition.

Here I have the following simple join query.

var queryable = from claim in AtomDbMapper.UserClaims.AsQueryable()
                join user in AtomDbMapper.Users.AsQueryable() on claim.UserId equals user.Id into users
                where claim.ClaimType == "Moderator"
                select users.First()

Now, I want to perform a filter operation on the users that are returned.

If I perform the filter query using the LINQ functions as follows

var whereQuery = queryable.Where(x => x.NormalizedUsername == "PAPLABROS");

The following query is generated by the driver.

{aggregate([{ "$lookup" : { "from" : "Users", "localField" : "UserId", "foreignField" : "_id", "as" : "users" } }, { "$match" : { "ClaimType" : "Moderator" } }, { "$project" : { "__fld0" : { "$arrayElemAt" : ["$users", 0] }, "_id" : 0 } }, { "$match" : { "__fld0.NormalizedUsername" : "PAPLABROS" } }])}

which works perfectly fine.

Now if I use a FilterDefinition along with the Inject() method as follows.

var filter = Builders<UserEntity>.Filter.Eq(x => x.NormalizedUsername, "PAPLABROS");
var filterQuery = queryable.Where(x => filter.Inject());

The following query is generated by the driver.

{aggregate([{ "$lookup" : { "from" : "Users", "localField" : "UserId", "foreignField" : "_id", "as" : "users" } }, { "$match" : { "ClaimType" : "Moderator" } }, { "$project" : { "__fld0" : { "$arrayElemAt" : ["$users", 0] }, "_id" : 0 } }, { "$match" : { "NormalizedUsername" : "PAPLABROS" } }])}

which when executed doesn’t yield any result.

Notice that the difference between those 2 queries is that the second one doesn’t specify the __fld0 field at the last match operation. It appears to be an issue when using the Inject() method along with any IMongoQueryable that represents an aggregation query. If someone can verify this, or correct me would be higly appriciated!

Thanks in advance!