Версия 2 на драйвера MongoDB C# изисква настройка на IsUpsert
флаг в командите за запис. Този пример ще премести цял документ.
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);
Версия 1 на драйвера MongoDB C# реализира тази логика в Save
команда.
var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
collection.Save(newDoc);
Методът за запазване е комбинация от вмъкване и актуализиране. Ако членът Id на документа има стойност, тогава се приема, че това е съществуващ документ и Save calls Update на документа (задаване на флаг Upsert, само в случай, че всъщност е нов документ все пак). В противен случай се приема, че е нов документ и Save calls Insert след първо присвояване на новогенерирана уникална стойност на члена Id.
Справка:http://mongodb.github.io/mongo-csharp-driver/1.11/driver/#save-tdocument-method
Забележка:Това обаче изисква правилното съпоставяне на полето Id. Повече информация за това тук:http://mongodb.github.io/mongo-csharp-driver/1.11/serialization/#identifying-the-id-field-or-property