Подтвердить что ты не робот

MongoDB С# Driver 2.0 - Обновить документ

В настоящее время я обновляю свой код до MongoDB С# 2.0, и у меня возникают проблемы с обновлением кода для обновления документов.

используя старую версию, я смог сделать что-то вроде этого:

MyType myObject; // passed in 
var collection = _database.GetCollection<MyType>("myTypes");
var result = collection.Save(myObject);

Я изо всех сил пытаюсь найти способ сделать это в новой версии. Я нашел несколько примеров обновления отдельных полей, таких как

var filter = Builders<MyType>.Filter.Eq(s => s.Id, id);
var update = Builders<MyType>.Update.Set(s => s.Description, description);
var result = await collection.UpdateOneAsync(filter, update);

Я хочу обновить все поля, как я делал в старой версии, с помощью метода Save.

Любые идеи?

Спасибо большое

4b9b3361

Ответ 1

Я думаю, что вы ищете ReplaceOneAsync():

MyType myObject; // passed in 
var filter = Builders<MyType>.Filter.Eq(s => s.Id, id);
var result = await collection.ReplaceOneAsync(filter, myObject)

Ответ 2

Чтобы добавить к ответу mnemosyn, в то время как простой ReplaceOneAsync действительно обновляет документ, он не эквивалентен " Save как Save, а также вставляет документ, если не ReplaceOneAsync для обновления.

Чтобы добиться того же поведения с ReplaceOneAsync вам нужно использовать параметр options:

MyType myObject; 
var result = await collection.ReplaceOneAsync(
    item => item.Id == id, 
    myObject, 
    new UpdateOptions {IsUpsert = true});

Ответ 3

вы можете использовать LINQ следующим образом: await context.collection.ReplaceOneAsync(b = > b.Id == item.Id, item);