Mongodb C#驱动程序更新问题

时间:2017-07-16 17:32:01

标签: c# mongodb

在驱动程序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")

按预期工作但似乎太丑陋且容易出错。我们能以更好的方式实现它吗?

1 个答案:

答案 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。