我在mongodb中有一个文档,其结构类似于此:

{
  "_id": "abcdef01234",
  "Name": "Product A",
  "Dimensions": [
    {
      "Height": 32,
      "Width": 64
    },
    {
      "Height": 16,
      "Width": 32
    },
    {
      "Height": 8,
      "Width": 16
    }
  ]
}

我也定义了一个代表尺寸的类(上面的子文档)
public class Dimension
{
  public int Height { get; set; }
  public int Width { get; set; }
}

我以这种方式选择“产品A”文档:
MongoServer srv = MongoServer.Create(myConnStr);
BsonDocument doc = srv["db"]["products"].FindOneById(ObjectId.Parse("abcdef01234"));
BsonValue dimensionsVal = doc["Dimensions"];

现在,我有一个名为DimensionsVal的BsonValue,它的类型为BsonArray。我真正想要的是一个List 。如何将DimensionsVal转换为List ?

编辑
维度类实际上比我描述的要复杂得多。由于内存方面的原因,我想将尺寸与产品分开。我想将产品保留在内存中,但不要保留(可能很大)尺寸表。因此,我不想将List作为Product类的属性。

最佳答案

这是可以做到的:

using MongoDB.Bson.Serialization;

MongoServer srv = MongoServer.Create(myConnStr);
BsonDocument doc = srv["db"]["products"].FindOneById(ObjectId.Parse("abcdef01234"));
BsonValue dimVal = doc["Dimensions"];
List<Dimension> d = BsonSerializer.Deserialize<List<Dimension>>(dimVal.ToJson());

关于c# - Mongo C#驱动程序:反序列化BsonValue,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6700662/

10-10 05:49