我試圖從MongoDB的集合與日期過濾器讀取*表達的序列化信息*(僅日期,時間應該被忽略):無法確定使用.Date
var filterDefinition = Builders<SomeClass>.Filter.Eq(p => p.SomeDateTimeProperty.Date, DateTime.Now.Date);
using (var cursor = await _someCollection.FindAsync(filterDefinition))
{ ... }
SomeClass
和在SomeDateTimeProperty
屬性是這樣的:
[BsonIgnoreExtraElements]
[Serializable]
public class ReportConfiguration
{
...
public DateTime SomeDateTimeProperty { get; set; }
...
}
試圖.FindAsync()
時,代碼引發InvalidOperationException
:
類型的異常「System.InvalidOperationException」發生在 MongoDB.Driver.dll但在用戶代碼中沒有處理的其他信息 :無法確定p的串行化信息 => p.SomeDateTimeProperty.Date
如果我刪除過濾器中的.Date部分(p.SomeDateTimeProperty.Date,DateTime.Now.Date),一切正常,但無論hh \ mm如何,我都需要一個yyyy \ mm \ dd比較。
堆棧跟蹤說:
at MongoDB.Driver.ExpressionFieldDefinition`2.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
at MongoDB.Driver.SimpleFilterDefinition`2.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
at MongoDB.Driver.MongoCollectionImpl`1.CreateFindOperation[TProjection](FilterDefinition`1 filter, FindOptions`2 options)
at MongoDB.Driver.MongoCollectionImpl`1.FindAsync[TProjection](FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
at MongoDB.Driver.IMongoCollectionExtensions.FindAsync[TDocument](IMongoCollection`1 collection, FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
at [...]
可能是什麼問題?
您是否嘗試過沒有.Date部分? – Mahdi
是的,刪除.Date部分可以防止出現異常,我在問題中添加了這個說明 - 謝謝! –