【问题标题】:Update List<string> in mongoDB更新 mongoDB 中的 List<string>
【发布时间】:2012-07-23 18:37:09
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    看起来 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】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-05-15
          • 2018-12-30
          • 2017-12-03
          • 1970-01-01
          • 2021-12-25
          • 2017-07-22
          • 2020-10-21
          相关资源
          最近更新 更多