我正在尝试使用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变量。我的猜测是,这是因为它在一个物体里面,但我不确定我哪里出错了。
答案 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 DeSerializer
和MyDataClass