[CSHARP-2630] query filter on datetime field with lambda expression gives System.InvalidOperationException: {document..} is not supported Created: 11/Jun/19  Updated: 25/Jun/20  Resolved: 25/Jun/20

Status: Closed
Project: C# Driver
Component/s: Builders, Linq
Affects Version/s: 2.8.0
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Poonam Assignee: Wan Bachtiar
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Windows server 2012, visual studio, C# mongodb .net driver



 Description   

Could you please assist to get query working for below criteria ? 

 

var filter3 = Builders<documentType>.Filter.Gt(f => f.usehour, 0)
& Builders<documentType>.Filter.Ne("ExpirationDate", BsonNull.Value)
& Builders<documentType>.Filter.Gt(f => f.ExpirationDate, DateTime.Now)
& Builders<documentType>.Filter.Where(f => f.ExpirationDate.AddHours(f.usehour) > DateTime.Now )

//& Builders<documentType>.Filter.Gt(f => f.ExpirationDate.AddHours(f.usehour) , DateTime.Now);  // tried this also

 

Exception details:

{document}{ExpirationDate}.AddHours(Convert({document}{usehour}, Double)) is not supported.


{System.InvalidOperationException: {document} {ExpirationDate}

.AddHours(Convert({document}

{usehour}

, Double)) is not supported.
at MongoDB.Driver.Linq.Translators.PredicateTranslator.GetFieldExpression(Expression expression)
at MongoDB.Driver.Linq.Translators.PredicateTranslator.TranslateComparison(Expression variableExpression, ExpressionType operatorType, ConstantExpression constantExpression)
at MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node)
at MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node, IBsonSerializerRegistry serializerRegistry)
at MongoDB.Driver.AndFilterDefinition`1.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
at MongoDB.Driver.OrFilterDefinition`1.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
at MongoDB.Driver.AndFilterDefinition`1.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
at MongoDB.Driver.MongoCollectionImpl`1.CreateFindOperation[TProjection](FilterDefinition`1 filter, FindOptions`2 options)
at MongoDB.Driver.MongoCollectionImpl`1.FindSync[TProjection](IClientSessionHandle session, FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
at MongoDB.Driver.MongoCollectionImpl`1.<>c_DisplayClass41_0`1.<FindSync>b_0(IClientSessionHandle session)
at MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSession[TResult](Func`2 func, CancellationToken cancellationToken)
at MongoDB.Driver.MongoCollectionImpl`1.FindSync[TProjection](FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
at MongoDB.Driver.FindFluent`2.ToCursor(CancellationToken cancellationToken)
at MongoDB.Driver.IAsyncCursorSourceExtensions.ToList[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken)

 

 

 



 Comments   
Comment by Rachelle Palmer [ 25/Jun/20 ]

Hi there, thank you for reaching out to MongoDB. As this sounds more like a support issue, I wanted to give you some resources to get this question answered more quickly:

  • our MongoDB support portal, located at support.mongodb.com
  • our MongoDB community forums, located here
  • If you are an Atlas customer, there is free support offered 24/7 in the lower right hand corner of the UI.

Thank you!
Rachelle

Comment by Poonam [ 11/Jun/19 ]

if try with this

Builders<documnetType>.Filter.Gt(f => f.ExpirationDate.AddHours(f.usehour) , DateTime.Now); gives this exception

Unable to determine the serialization information for  f.ExpirationDate.AddHours(f.usehour) 

Generated at Wed Feb 07 21:43:05 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.