从文档中获取子元素

时间:2015-01-02 12:11:50

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

我正在尝试使用c#连接器从我的文档中获取子元素。

我的文档看起来像这样:

// sample document
{
   "_id":
   {
      "$oid":"myid"
   },
   "Somedata":"This is a test",
   "object1":
   {
      "name":"myname",
      "object2":
      {
         "Text":"Hello World!"
      }
   }
}

我有一个映射到此的类,看起来如下所示:

[BsonIgnoreExtraElements]
public class MyDataClass
{
    [BsonId]
    public ObjectId Id { get; set; }
    [BsonElement("object1.object2.Text")]
    public string Text;
    [BsonElement("Somedata")]
    public string Data;
}

运行查询时,将填充id和Data变量,但不会填充Text变量。我的猜测是,这是因为它在一个物体里面,但我不确定我哪里出错了。

1 个答案:

答案 0 :(得分:3)

BsonElement接受一个参数作为字段名称根级别的名称,例如'field1',并且您无法传递嵌套名称(使用点符号命名,例如 'field1.nested_field')。您必须为子文档定义一些类

public class MyDataClass
{
    public ObjectId _id { get; set; }
    public string Somedata { get; set; }
    public Object1 object1 { get; set; }
}

public class Object1
{
    public string name { get; set; }
    public Object2 object2 { get; set; }
}

public class Object2
{
    public string Text { get; set; }
}

如果您不想为子文档定义新类,则必须为Serializer编写自己的mongo DeSerializerMyDataClass