在mongoDB中更新列表<string> </string>

时间:2012-07-23 18:37:10

标签: c# mongodb mongodb-.net-driver

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

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

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

3 个答案:

答案 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);