Я изо всех сил пытаюсь сделать Upsert в MongoDB. Я хотел бы выполнить sh такое поведение:
Создать объект для загрузки в базу данных (NachName = LastName // VorName = FirstName): определение класса
public class NameModel
{
[BsonId]
public Guid Id { get; set; }
public string NachName { get; set; }
public string VorName { get; set; }
public NameModel()
{
NachName = "Mustermann";
VorName = "Max";
}
public NameModel(string nachName, string vorName)
{
NachName = nachName;
VorName = vorName;
}
}
Посмотрите, если База данных уже имеет запись (документ) с заданным Guid (Filter = Guid). Вызов метода:
NameModel name = new NameModel();
DB.UpsertDocumentByGuid<NameModel>("NameCollection", TxbGuid.Text, name);
И это метод, который вызывается, и вот ошибка
public void UpsertDocumentByGuid<T>(string table, string guid, T document)
{
var collection = db.GetCollection<T>(table);
var filter = new BsonDocument("Id", guid);
var update = document ; // ERROR -> converting T to MongoDB.Driver.UpdateDefinition<T> not possible
var options = new UpdateOptions { IsUpsert = true };
var result = collection.UpdateOne(filter, update, options);
}
Я хотел бы иметь метод, который смотрит, если Guid уже там и если да, обновите то, что отличается в Документе (сравните документ, данный для Метода, с документом с найденным Guid) или, если существует объект Guid, вставьте новый документ в Базу данных.