0
我對MongoDB和MongoDB C#驅動程序很新。MongoDB強類型過濾器和Find()
爲了使代碼更具可讀性(和可靠性),我決定嘗試使用強類型對象。因此,我創建了一個POCO ...
只有Id和Payload最初出現在數據庫中。
internal class MongoDbRepositoryItem
{
[BsonId]
public string Id { get; set; }
[BsonElement("rawdata")]
public byte[] Payload { get; set; }
public string ProcessingStatus { get; set; }
public DateTime ProcessingStarted { get; set; }
public int ProcessingAttempts { get; set; }
}
現在有多個操作我需要完成。
首先,我需要檢索最古老的未經處理的物品。
我在想這樣的事情:
var builder = Builders<MongoDbRepositoryItem>.Filter;
// I didn't read about sorting yet. I also need the "oldest" document.
var filter = builder.Exists(item => item.ProcessingStatus, false);
MongoDbRepositoryItem result = await _collection.FindAsync<MongoDbRepositoryItem>(filter);
但是,這並不編譯。FindAsync()
需要一個BsonDocument。我的過濾器顯然是強類型的。我在documentation找不到任何答案。
錯誤是「無法從FilterDefinition轉換爲FilterDefinition 」。感謝First()提示,稍後我將使用FindOneAndUpdate()。 –
lapsus
你使用什麼版本的驅動程序 - 我無法重現.... – profesor79
mongodriver = latest(2.2.4) – lapsus