Version 2 des MongoDB C#-Treibers erfordert das Setzen von IsUpsert
Flag in den Schreibbefehlen. Dieses Beispiel fügt ein ganzes Dokument ein.
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 des MongoDB-C#-Treibers implementiert diese Logik innerhalb von Save
Befehl.
var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
collection.Save(newDoc);
Die Save-Methode ist eine Kombination aus Insert und Update. Wenn das Id-Element des Dokuments einen Wert hat, wird davon ausgegangen, dass es sich um ein vorhandenes Dokument handelt, und Save ruft Update für das Dokument auf (setzt das Upsert-Flag nur für den Fall, dass es sich tatsächlich um ein neues Dokument handelt). Andernfalls wird davon ausgegangen, dass es sich um ein neues Dokument handelt, und Save ruft Insert auf, nachdem dem Id-Member zunächst ein neu generierter eindeutiger Wert zugewiesen wurde.
Referenz:http://mongodb.github.io/mongo-csharp-driver/1.11/driver/#save-tdocument-method
Hinweis:Dies erfordert jedoch die richtige Zuordnung des ID-Felds. Weitere Informationen dazu hier:http://mongodb.github.io/mongo-csharp-driver/1.11/serialization/#identifying-the-id-field-or-property