gpt4 book ai didi

c# - Mongo C# 驱动程序更新嵌套数组中的特定元素

转载 作者:可可西里 更新时间:2023-11-01 10:38:07 25 4
gpt4 key购买 nike

如何在 Mongo(C# 驱动程序)中修改嵌套属性(数组)中的单个元素而不检索整个文档?

public class Element
{
public int Value {get; set;}

public string Name {get; set;}
}

public class Document
{

public Element [] Elements {get; set;}
}

在示例中,我想在单个查询中找到名称为“Car”的元素并将其值设置为 4。

最佳答案

你需要$ positional operator您可以在其中指定文档级条件和数组级条件以在特定文档的数组中查找单个嵌套项。在 C# 中,$ 符号由作为模型数组索引传递的 -1 表示。尝试:

var col = mydb.GetCollection<Document>("collectionName");
var id = new ObjectId("5babaaf5509f6d342da5abaa");
var elementName = "Car";
var newValue = 2;

var filterBuilder = Builders<Document>.Filter;
var filter = filterBuilder.Eq(x => x.Id, id) &
filterBuilder.ElemMatch(doc => doc.Elements, el => el.Name == elementName);

var updateBuilder = Builders<Document>.Update;
var update = updateBuilder.Set(doc => doc.Elements[-1].Value, newValue);

Col.UpdateOne(filter, update);

关于c# - Mongo C# 驱动程序更新嵌套数组中的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52521677/

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