2015-05-21 9 views
8

Ich habe einige C# -Code, der die alte Version 1.x des MongoDB-Treibers verwendet, die eine generische Speichermethode unter Verwendung der MongoCollection.Save()-Methode bietet. Nach dem Upgrade auf 2.0 scheint diese Methode jedoch weg zu sein und durch eine Update-Methode ersetzt zu werden, die alle aktualisierten Felder auf dem Objekt erfordert (was offensichtlich nicht gut für eine generische Methode ist).Neue Alternative für alten .net Treiber MongoCollection.Save?

Wie kann ich? die Funktionalität der alten Save-Methode beibehalten (dh nur ein Objekt übergeben, um alle Felder zu aktualisieren) im 2.0-Treiber?

Antwort

7

Sie können ReplaceOneAsync mit dem IsUpsert Flag verwenden und eine ID-Abfrage:

public async Task<ReplaceOneResult> Save(Hamster hamster) 
{ 
    var replaceOneResult = await collection.ReplaceOneAsync(
     doc => doc.Id == hamster.Id, 
     hamster, 
     new UpdateOptions {IsUpsert = true}); 
    return replaceOneResult; 
} 

Sie bei ReplaceOneResult.MatchedCount schauen, um zu sehen, ob es sich um eine Einfügung oder Aktualisierung war.

Verwandte Themen