Я довольно новичок в MongoDB и в драйвере MongoDB C#.MongoDB сильно типизировал фильтр и Find()
Чтобы сделать код более читаемым (и надежным), я решил попробовать сильно типизированные объекты. Поэтому я создал POCO ...
Только идентификатор и полезная нагрузка первоначально присутствуют в базе данных.
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