gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:08:40 28 4
gpt4 key购买 nike

我查找了一种使用 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);

但它给出了一个编译错误:

无法从 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<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 - C# MongoDB 驱动程序 - 如何使用 UpdateDefinitionBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49346654/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com