2012-07-23 61 views
0

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

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

这会给我一个错误说“形象”不是BsonValue ..如何转换字符串列表的bsonvalue?谢谢

回答

2

这就是我所做的解决这个问题:我转换该列表BsonArray:

List<string> Images = someList; 
var update = Update.Set("Images", new BsonArray(Images)); 
collection.Update(query, update, UpdateFlags.Upsert); 
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); 
2

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

List<string> images = someList; 
var update = Update<SomeListClass>.Set(x => x.Images, images);