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 に暗黙的に変換することはできません。

とにかく Upsert を行っているように見えますが、代わりに Save を使用できますか?

シリアル化と保存を使用してこの問題を解決する 1 つの方法は次のとおりです。

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

最新の 1.5 バージョンの C# ドライバーを使用している場合は、新しい型付き Update ビルダーを使用して、正しい要素名と新しい値をシリアル化する方法を判断させることもできます。

List<string> images = someList;
var update = Update<SomeListClass>.Set(x => x.Images, images);
于 2012-07-24T13:52:11.580 に答える
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 に答える