我有一个要使用 C# 驱动程序在 MongoDB 中更新的字符串列表。我该怎么做呢?
List<string> Images = someList;
var update = Update.Set("Images", Images);
collection.Update(query, update, UpdateFlags.Upsert);
这会给我一个错误,说'Images'不是BsonValue ..如何将字符串列表转换为bsonvalue?谢谢
我有一个要使用 C# 驱动程序在 MongoDB 中更新的字符串列表。我该怎么做呢?
List<string> Images = someList;
var update = Update.Set("Images", Images);
collection.Update(query, update, UpdateFlags.Upsert);
这会给我一个错误,说'Images'不是BsonValue ..如何将字符串列表转换为bsonvalue?谢谢
看起来 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);
这就是我为解决它所做的:我将该列表转换为 BsonArray:
List<string> Images = someList;
var update = Update.Set("Images", new BsonArray(Images));
collection.Update(query, update, UpdateFlags.Upsert);
如果您使用的是最新的 1.5 版本的 C# 驱动程序,您还可以使用新的类型化更新构建器,让它找出正确的元素名称以及如何序列化新值。
List<string> images = someList;
var update = Update<SomeListClass>.Set(x => x.Images, images);