了解mongo db中深层嵌套的文档结构

时间:2012-05-09 17:40:03

标签: mongodb

我正在使用Mongodb C#官方驱动程序。它允许我们构建嵌套的文档结构。现在,查询这些文档是一项繁琐的任务,因为它需要一个完全限定的点符号来准确引用相关文档。为此,我想检索所有父文档键,以便我可以选择其中一个并附加到字符串并传递给.Query。我能够递归地获取所有外键,但我不知道如何使外键的名称比输入的键小一级。 我用来获取所有密钥的代码如下:

void Print(BsonDocument document)
        {

            foreach (var element in document)
            {
                bool a = element.Value.IsBsonDocument;
                if (element.Value.IsBsonDocument)
                {
                    Console.WriteLine(element.Name);
                    Print(element.Value.AsBsonDocument);
                    Console.WriteLine("\n");
                }

            }

该文件是我通过FindOneById(Id)方法获得的主要文件

1 个答案:

答案 0 :(得分:1)

为了确保我理解,您的问题是如何找到一个级别的子对象的关键名称?

在内部if语句中,调用element.Value.AsBsonDocument应该返回一个BSON文档。然后,您应该能够以与遍历外部文档的字段相同的方式迭代该文档中的字段。您生成的代码可能类似于:

void Print(BsonDocument document)
{
    foreach (var element in document)
    {
        if (element.Value.IsBsonDocument)
        {
            BsonDocument subdoc = element.Value.AsBsonDocument;
            foreach (var subelement in subdoc)
            {
                // Code to print the subdocument here
            }
        }

    }
}