Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从文档中获取子元素_C#_Json_Mongodb_Mongodb .net Driver - Fatal编程技术网

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!" } } } 我有一个映射到这个的类,

我试图使用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和数据变量,但不会填充文本变量。我的猜测是,这是因为它位于对象内部,但我不确定哪里出了问题。

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驱动程序不会为您这样做与论坛网站不同,我们不会使用“谢谢”或“感谢任何帮助”或签名。见”。