2017-07-16 4 views
0

Vor-Treiber 2.0 konnte ich die Update-Anweisung wieMongoDB C# Treiber-Update-Problem

basierend auf unterschiedlichen Business-Logik schaffen
var update = new UpdateBuilder(); 
    update.set("FN","Devesh") 
    if(true) 
     update.set("MN","kumar") 

Da ich so

var update = Builders<BsonDocument>.Update; 
    var updateQuery = update.Set("FN", "Devesh"); 
    if(true) 
     updateQuery.set("MN","kumar") 
auf Version 2 der ähnlichen Ansatz Upgrade

Jetzt wird nur der "FN" und nicht der "MN" aktualisiert. Es scheint, als ob es nicht das gleiche Objekt aktualisiert. Irgendeine Idee, wie man dasselbe erreicht.

Ich benutze C# offiziellen Treiber.

UPDATE

var update = Builders<BsonDocument>.Update; 
    var updateQuery = update.Set("FN", "Devesh"); 
    if(true) 
     updateQuery = updateQuery.set("MN","kumar") 

funktioniert wie erwartet, aber es scheint zu hässlich und fehleranfällig zu sein. Können wir das viel besser erreichen?

Antwort

0

Ich glaube, das könnte eine besser handhabbare Lösung für Sie

var updateList = new List<UpdateDefinition<TProduct>>(); 

updateList.Add(Builders<BsonDocument>.Update.Set("FN", "Devesh")); 

if (true) 
{ 
    updateList.Add(Builders<BsonDocument>.Update.Set("MN", "kumar")); 
} 

var combinedUpdates = Builders<BsonDocument>.Update.Combine(updateList); 

Nach dem Sie das combinedUpdates als Ihre regelmäßige updateDefinition verwenden können.