0

我有一个要使用 C# 驱动程序在 MongoDB 中更新的字符串列表。我该怎么做呢?

  List<string> Images = someList;
  var update = Update.Set("Images", Images);
  collection.Update(query, update, UpdateFlags.Upsert);

这会给我一个错误,说'Images'不是BsonValue ..如何将字符串列表转换为bsonvalue?谢谢

4

3 回答 3

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);
于 2012-07-24T08:02:48.020 回答
2

这就是我为解决它所做的:我将该列表转换为 BsonArray:

List<string> Images = someList;
var update = Update.Set("Images", new BsonArray(Images));
collection.Update(query, update, UpdateFlags.Upsert);
于 2012-07-24T13:13:36.140 回答
2

如果您使用的是最新的 1.5 版本的 C# 驱动程序,您还可以使用新的类型化更新构建器,让它找出正确的元素名称以及如何序列化新值。

List<string> images = someList;
var update = Update<SomeListClass>.Set(x => x.Images, images);
于 2012-07-24T13:52:11.580 回答