Version 2 du pilote MongoDB C# nécessite de définir le IsUpsert
drapeau dans les commandes d'écriture. Cet exemple mettra à jour un document entier.
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);
Version 1 du pilote MongoDB C# implémente cette logique dans le Save
commande.
var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
collection.Save(newDoc);
La méthode Save est une combinaison de Insert et Update. Si le membre Id du document a une valeur, alors il est supposé être un document existant et Save appelle Update sur le document (définissant l'indicateur Upsert juste au cas où il s'agirait en fait d'un nouveau document après tout). Sinon, il est supposé être un nouveau document et Save appelle Insert après avoir d'abord attribué une valeur unique nouvellement générée au membre Id.
Référence :http://mongodb.github.io/mongo-csharp-driver/1.11/driver/#save-tdocument-method
Remarque :Cela nécessite cependant le mappage approprié du champ Id. Plus d'informations à ce sujet ici :http://mongodb.github.io/mongo-csharp-driver/1.11/serialization/#identifying-the-id-field-or-property