C# 从文档中获取子元素
我试图使用c#连接器从文档中获取子元素 我的文档如下所示:C# 从文档中获取子元素,c#,json,mongodb,mongodb-.net-driver,C#,Json,Mongodb,Mongodb .net Driver,我试图使用c#连接器从文档中获取子元素 我的文档如下所示: // sample document { "_id": { "$oid":"myid" }, "Somedata":"This is a test", "object1": { "name":"myname", "object2": { "Text":"Hello World!" } } } 我有一个映射到这个的类,
// 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和数据变量,但不会填充文本变量。我的猜测是,这是因为它位于对象内部,但我不确定哪里出了问题。
bsonement
接受一个参数作为字段名的根级别的名称,如'field1',并且不能传递嵌套名称(使用点符号命名,如'field1.nested\u 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; }
}
如果你不想为你的子文档定义新的类,你必须为
MyDataClass
编写你自己的mongo序列化程序和反序列化程序,我相信你的id格式不对,你确定mongodb返回一个文档时,{$oid:“myid”}会返回整个文档吗。没有像SQL中那样的特定于列名的选择。因此,您需要遍历Object1以获取文本字段。我相信mongodb驱动程序不会为您这样做与论坛网站不同,我们不会使用“谢谢”或“感谢任何帮助”或签名。见”。