如何使用mongo c#驱动程序更新数组/列表中的项目?

如何使用mongo c#驱动程序更新数组/列表中的项目?,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,对于最近的更新,我想更新我的代码,使其使用强类型版本 我之前的电话是: var update2 = new UpdateBuilder(); var index = album.Ratings.IndexOf(rating); update2.Set("Ratings." + index + ".Number", number); update2.Set("Rating", album.Rating); _session.Db().GetCollection<Album>("Albu

对于最近的更新,我想更新我的代码,使其使用强类型版本

我之前的电话是:

var update2 = new UpdateBuilder();
var index = album.Ratings.IndexOf(rating);
update2.Set("Ratings." + index + ".Number", number);
update2.Set("Rating", album.Rating);
_session.Db().GetCollection<Album>("Album")
    .Update(Query<Album>.Where(x => x.Id == objId), update2); //this line is working
但我有一个例外:

无法确定表达式的序列化信息: (专辑x)=> x、 Ratings.get_项(WebApp.Areas.API.Controllers.RatingController+c_uDisplayClass5.index)。编号


有什么方法可以更新列表中的项目吗?

有趣的问题。当使用如下常量时,此选项有效:

var update = Update<Album>.Set(x => x.Ratings[0].Number, 10);
var update=update


这很可能是因为我们在处理表达式之前没有对其进行部分求值。

谢谢Craig,如果我们不必编写“广告”,调用_session.Db().GetCollection(“广告”)也会非常好它默认使用类的名称,这样我们就不会在应用程序中使用魔术字符串了!这是一些非常好的工作,已经在mongo LINQ完成!这是一场正在进行的辩论。目前,大多数人编写的扩展方法使用typeof(T).Name作为集合名。
var update = Update<Album>.Set(x => x.Ratings[0].Number, 10);