2012-07-23 60 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);