在驱动程序2.0之前,我能够根据不同的业务逻辑(如
)创建更新语句 var update = new UpdateBuilder();
update.set("FN","Devesh")
if(true)
update.set("MN","kumar")
由于我已经升级到版本2,所以类似的方法就像这样
var update = Builders<BsonDocument>.Update;
var updateQuery = update.Set("FN", "Devesh");
if(true)
updateQuery.set("MN","kumar")
现在只更新&#34; FN&#34;而不是&#34; MN&#34;。好像它没有更新同一个对象。不知道如何实现同样的目标。
我正在使用C#官方驱动程序。
更新
var update = Builders<BsonDocument>.Update;
var updateQuery = update.Set("FN", "Devesh");
if(true)
updateQuery = updateQuery.set("MN","kumar")
按预期工作但似乎太丑陋且容易出错。我们能以更好的方式实现它吗?
答案 0 :(得分:0)
我相信这可能是一个更易于管理的解决方案
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);
之后,您可以将combinedUpdates用作常规updateDefinition。