Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MongoDB驱动程序-如何使用UpdateDefinitionBuilder?_Mongodb_Mongodb .net Driver - Fatal编程技术网

C#MongoDB驱动程序-如何使用UpdateDefinitionBuilder?

C#MongoDB驱动程序-如何使用UpdateDefinitionBuilder?,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我找到了一种使用mongodb的UpdateDefinitionBuilders的方法,但是没有显示太多 我需要能够动态构建我的更新查询,因此我考虑这样做: var update = Builders<Product>.Update; update.Set("add A update"); if () update.Set("add X update"); else update.Set("add Y update"); update.Set("add B up

我找到了一种使用mongodb的
UpdateDefinitionBuilders
的方法,但是没有显示太多

我需要能够动态构建我的更新查询,因此我考虑这样做:

var update = Builders<Product>.Update;

update.Set("add A update");

if ()
    update.Set("add X update");
else
    update.Set("add Y update");

update.Set("add B update");

if ()
    update.Set("add Z update");
else
    update.Set("add P update");

Collection.UpdateOneAsync(filter, update, updateOptions);
var update=Builders.update;
update.Set(“添加更新”);
如果()
update.Set(“添加X更新”);
其他的
update.Set(“添加Y更新”);
update.Set(“添加B更新”);
如果()
update.Set(“添加Z更新”);
其他的
update.Set(“添加P更新”);
UpdateOneAsync(过滤器、更新、更新选项);
但它给出了一个编译错误:

无法从UpdateDefinitionBuilder UpdateDefinition转换

我查看了,但找不到如何使用此
UpdateDefinitionBuilders


有人能提供一个如何使用这个类的代码示例吗?

如果您需要简单地更新多个属性,您可以在更新生成器上调用
Set
,然后调用
Set
扩展方法。可以使用lambda表达式或属性名称

var update = Builders<Product>.Update
    .Set(p => Name, "Name value")
    .Set(p => Description, "Description value");

collection.UpdateOneAsync(filter, update, updateOptions);
var update=Builders.update
.Set(p=>Name,“Name-value”)
.Set(p=>Description,“Description value”);
UpdateOneAsync(过滤器、更新、更新选项);
若要有条件地更新某些属性,则应创建一组更新,然后将它们合并:

var update = Builders<Product>.Update;
var updates = new List<UpdateDefinition<Product>>();

updates.Add(update.Set("propertyA", "add A update"));

if ()
    updates.Add(update.Set("propertyX", "add X update"));
else
    updates.Add(update.Set("propertyY", "add Y update"));

updates.Add(update.Set(p => p.PropertyB, "add B update"));

if ()
    updates.Add(update.Set(p => p.PropertyZ, "add Z update"));
else
    updates.Add(update.Set(p => p.PropertyP, "add P update"));

Collection.UpdateOneAsync(filter, update.Combine(updates), updateOptions);
var update=Builders.update;
var updates=新列表();
updates.Add(update.Set(“propertyA”,“添加更新”));
如果()
updates.Add(update.Set(“propertyX”、“addx update”);
其他的
updates.Add(update.Set(“propertyY”、“addy update”);
updates.Add(update.Set(p=>p.PropertyB,“Add B update”);
如果()
updates.Add(update.Set(p=>p.PropertyZ,“addzupdate”);
其他的
updates.Add(update.Set(p=>p.PropertyP,“addp update”);
Collection.UpdateOneAsync(filter、update.Combine(updates)、updateOptions);