Wersja 2 sterownika MongoDB C# wymaga ustawienia IsUpsert
flaga w poleceniach zapisu. Ten przykład podważy cały dokument.
var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
var result = await collection.ReplaceOneAsync(
filter: new BsonDocument("_id", 123),
options: new ReplaceOptions { IsUpsert = true },
replacement: newDoc);
Wersja 1 sterownika MongoDB C# implementuje tę logikę w Save
Komenda.
var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
collection.Save(newDoc);
Metoda Zapisz to połączenie Wstaw i Aktualizuj. Jeśli element ID dokumentu ma wartość, zakłada się, że jest to istniejący dokument, a funkcja Save wywołuje aktualizację dokumentu (ustawienie flagi Upsert na wypadek, gdyby w rzeczywistości był to nowy dokument). W przeciwnym razie zakłada się, że jest to nowy dokument, a funkcja Save wywołuje Insert po pierwszym przypisaniu nowo wygenerowanej unikalnej wartości do elementu identyfikatora.
Odniesienie:http://mongodb.github.io/mongo-csharp-driver/1.11/driver/#save-tdocument-method
Uwaga:wymaga to jednak prawidłowego mapowania pola identyfikatora. Więcej informacji na ten temat tutaj:http://mongodb.github.io/mongo-csharp-driver/1.11/serialization/#identifying-the-id-field-or-property