-2

公式の Mongodb C# ドライバーを使用しています。これにより、ネストされたドキュメント構造を構築できます。現在、問題のドキュメントを正確に参照するには完全修飾ドット表記が必要なため、これらのドキュメントに対するクエリは面倒な作業です。このために、すべての親ドキュメント キーを取得して、そのうちの 1 つを選択し、文字列に追加して .Query に渡すことができるようにします。すべての外部キーを再帰的に取得できますが、入力したキーより 1 レベル低い外部キーの名前を取得する方法がわかりません。すべてのキーを取得するために使用しているコードは次のとおりです。

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) メソッドで取得したメイン ドキュメントです。

4

1 に答える 1

1

私が理解していることを確認するために、あなたの質問は、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
            }
        }

    }
}
于 2012-05-09T18:02:24.363 に答える