我想要使用C#驱动程序在MongoDB中更新字符串列表。我该怎么做?
List<string> Images = someList;
var update = Update.Set("Images", Images);
collection.Update(query, update, UpdateFlags.Upsert);
这会给我一个错误,说'Images'不是BsonValue ..如何将字符串列表转换为bsonvalue?感谢
答案 0 :(得分:2)
看起来Update.Set需要一个BsonValue,你不能隐式地从List转换为BsonValue。
你看起来好像在做Upserts,你可以使用Save吗?
使用序列化和保存解决此问题的一种方法是:
public class SomeListClass
{
public ObjectId id { get; set; }
public List<string> Images { get; set; }
}
SomeListClass slc = new SomeListClass();
slc.Images = someList;
collection.Save(slc);
答案 1 :(得分:2)
这就是我要解决的问题:我将该列表转换为BsonArray:
List<string> Images = someList;
var update = Update.Set("Images", new BsonArray(Images));
collection.Update(query, update, UpdateFlags.Upsert);
答案 2 :(得分:2)
如果您使用的是最新的1.5版C#驱动程序,您还可以使用新的类型化更新构建器,让它找出正确的元素名称以及如何序列化新值。
List<string> images = someList;
var update = Update<SomeListClass>.Set(x => x.Images, images);