从文档中获取子元素

Get a child element from document

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

我的文档看起来像这样:

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

我有一个映射到这个的 class,看起来像下面这样:

[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 变量。我的猜测是这是因为它在对象内部,但我不确定我哪里出错了。

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; }
}

如果不想为您的子文档定义新的 类,您必须为 [= 编写自己的 mongo SerializerDeSerializer 14=]