从文档中获取子元素

本文关键字:元素 获取 文档 | 更新日期: 2023-09-27 18:35:50

我正在尝试使用 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 和数据变量,但不填充文本变量。我的猜测是,这是因为它在一个物体内部,但我不确定我哪里出错了。

从文档中获取子元素

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用于MyDataClass