Details
-
Bug
-
Resolution: Works as Designed
-
Unknown
-
None
-
2.20.0
-
None
-
None
Description
Summary
After upgrading the MongoDB C# driver from 2.15.0 to 2.20.0, I am getting ExpressionNotSupportedException for one of my queries. I am running MongoDB 5.0.18.
How to Reproduce
I have the following object:
public class UnlockableModel |
{
|
[BsonId]
|
public Guid profileId { get; set; } |
public Dictionary<String, List<String>> entries { get; set; } |
}
|
The following query will fail with ExpressionNotSupportedException:
List<string> categories = new List<string> {"Test"}; |
|
|
var filter = Builders<UnlockableModel>.Filter.Eq(model => model.profileId, profileId);
|
var options = new FindOptions<UnlockableModel> |
{
|
Projection = Builders<UnlockableModel>.Projection.Expression(p => new UnlockableModel |
{
|
profileId = p.profileId,
|
entries = (p.entries != null) ? new(p.entries.Where(kvp => categories.Contains(kvp.Key))) : new() |
})
|
};
|
|
|
var result = await _unlockableCollection.FindAsync(filter, options);
|
Downgrading the connection to LinqProvider.V2 fixes the issue:
var connectionString = "mongodb://localhost"; |
MongoClientSettings settings = MongoClientSettings.FromConnectionString(connectionString);
|
settings.LinqProvider = LinqProvider.V2;
|
Attachments
Issue Links
- duplicates
-
CSHARP-4763 Consider supporting client side projections with Find in LINQ3
-
- Scheduled
-
- related to
-
CSHARP-4779 Support Dictionary(IEnumerable<KeyValuePair<TKey, TValue>> collection) constructor in LINQ3
-
- Scheduled
-