C# MongoDB 驱动程序 - 如何使用 UpdateDefinitionBuilder?
C# MongoDB Driver - How to use UpdateDefinitionBuilder?
我查找了一种使用 mongodb 的 UpdateDefinitionBuilders
的方法,但 documentation 并没有真正显示太多...
我需要能够动态构建我的更新查询,所以我考虑这样做:
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);
但是编译报错:
cannot convert from UpdateDefinitionBuilder UpdateDefinition
我看过,但找不到如何使用此 UpdateDefinitionBuilders
的解决方案
有人可以提供一个代码示例来说明如何使用这个 class 吗?
如果您需要简单地更新多个属性,您可以在更新生成器上调用 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<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);
我查找了一种使用 mongodb 的 UpdateDefinitionBuilders
的方法,但 documentation 并没有真正显示太多...
我需要能够动态构建我的更新查询,所以我考虑这样做:
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);
但是编译报错:
cannot convert from UpdateDefinitionBuilder UpdateDefinition
我看过,但找不到如何使用此 UpdateDefinitionBuilders
有人可以提供一个代码示例来说明如何使用这个 class 吗?
如果您需要简单地更新多个属性,您可以在更新生成器上调用 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<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);