数组mongodb c#驱动程序中的更新字段

数组mongodb c#驱动程序中的更新字段,c#,arrays,mongodb,mongodb-.net-driver,mongodb-csharp-2.0,C#,Arrays,Mongodb,Mongodb .net Driver,Mongodb Csharp 2.0,我尝试从p2l数组更新对象的status字段 var update = Builders<BsonDocument>.Update.Set("p2l.$.status",BsonValue.Create(status)) var update=Builders.update.Set(“p2l.$.status”,BsonValue.Create(status)) 代码似乎可以正常工作,但如何使用类型化生成器实现它,并使用lambda设置所有字段? 我通过以下链接找到了解决方案

我尝试从
p2l
数组更新对象的
status
字段

var update = Builders<BsonDocument>.Update.Set("p2l.$.status",BsonValue.Create(status))
var update=Builders.update.Set(“p2l.$.status”,BsonValue.Create(status))
代码似乎可以正常工作,但如何使用类型化生成器实现它,并使用lambda设置所有字段? 我通过以下链接找到了解决方案


但它只适用于旧版本的驱动程序。

您可以尝试以下方法:

Builders<Person>.Update.Set(x => x.Pets[-1].Name, "Fluffencutters")
Builders.Update.Set(x=>x.Pets[-1]。名称,“Fluffencutters”)
注-1 Pets集合索引,这意味着为所有元素应用集合。
我通过探索找到了这个解决方案。

您确实意识到“为什么”这是用这种方式表示的,因此不是像lambda那样应用于数组成员的函数,不是吗?两件不同的事情。这里的目的是“匹配”更新的“查询”表达式中的数组元素。然后用这种方式标记“匹配索引”,以便更新正确的元素。