2017-08-17 19 views
0

DocumentDBに格納されているこれらの2つのサンプル文書を検討してください。Azure DocumentDB/Azure CosmosDBで辞書のキーと値を選択

文献1

"JobId": "04e63d1d-2af1-42af-a349-810f55817602", 
"JobType": 3, 
" 
"Properties": { 
    "Key1": "Value1", 
    "Key2": "Value2" 
    } 
"KeyNames": ["Key1", "Key2"] 

文献2

"JobId": "04e63d1d-2af1-42af-a349-810f55817603", 
"JobType": 4, 
" 
"Properties": { 
    "Key3": "Value3", 
    "Key4": "Value4" 
    } 
"KeyNames": ["Key3", "Key4"] 

私は、各ドキュメントのプロパティオブジェクト内のすべてのキーとすべての値を選択します。

SELECT 
c.JobId, 
c.JobType, 
c.Properties.<Keys> AS Keys, 
c.Properties.<Values> AS Values 
FROM c 

しかし、あなたが見ることができるようにキーが固定されていません。 何かのように。だから私はそれらをどのようにリストアップするのですか?最終的に私はこのような結果を得ました。 .NETまたはLINQを使用することはできません。 DocumentDB Query Explorerでクエリを実行する必要があります。

[ 
{ 
"JobId": "04e63d1d-2af1-42af-a349-810f55817602", 
"JobType": 3, 
"Key1": "Value1" 
} 

{ 
"JobId": "04e63d1d-2af1-42af-a349-810f55817602", 
"JobType": 3, 
"Key2": "Value2" 
} 

{ 
"JobId": "04e63d1d-2af1-42af-a349-810f55817603", 
"JobType": 4, 
"Key3": "Value3" 
} 

{ 
"JobId": "04e63d1d-2af1-42af-a349-810f55817603", 
"JobType": 4, 
"Key4": "Value4" 
} 
] 

答えて

0

私はDocumentDBでUDFを使用して問題を解決することができました。 KeyNamesは配列なので自己結合によって鍵が返されました。

このクエリです。

SELECT 
c.JobId, 
c.JobType, 
Key, 
udf.GetValueUsingKey(c.Properties, Key) AS Value 
FROM collection AS c 
JOIN Key in c.KeyNames 

が私に希望の結果を返しました。

DocumentDBで提供されているスクリプトエクスプローラを使用してUDFを定義できます。 は私のために私が使用:

function GetValueUsingKey(Properties, Key) { 
    var result = Properties[Key]; 
    return JSON.stringify(result); 
} 

・ホープ、このことができます:)

関連する問題