MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Upserting in Mongo DB mit dem offiziellen C#-Treiber

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