0

次のjsonをBSONドキュメントにロードした場合:

{
    "contact":
    { "firstname":"Pete"
        ,"surname":"Jones"
        ,"company":[{"name":"Virgin","notes":"some virgin notes"},{"name":"IBM","notes":"a great big IT company"}]
    }

    ,"response":
    {
        "_id":"123"
        ,"profileid":"567"
        ,"localdate":"12 Apr 2011 14:34:23"
    }
}

これを使用して、特定の要素が存在するかどうかを検出できます。

if (suppliedDoc.Contains("_id"))

しかし、この構文を使用してネストされた要素に対処することはできません:

if (suppliedDoc.Contains("response._id"))

ネストされた要素をアドレス指定するための正しい構文は何ですか? ルートまたはネストされた要素の存在を検出するより良い方法はありますか? 公式の C# ドライバーを使用しています。ありがとう。

4

1 に答える 1

1

あなたはおそらく次のようなものを求めています

if (suppliedDoc.Contains("response")
    && suppliedDoc["reponse"].AsBsonDocument.Contains("_id"))
{
    //...
}

私が同意するのはちょっと厄介です。

BsonDocumentただし、句読点を含む文字列を受け取り、それを で分割し、.上記の方法を使用してドリルダウンする拡張メソッドを作成するのにそれほど労力はかかりません。

于 2011-04-20T11:28:30.193 に答える