DocumentDB SQL-複合SQLクエリ
- 複合クエリ*を使用すると、既存のクエリからのデータを結合し、フィルター、集計などを適用してから、結合されたデータセットを示すレポート結果を表示できます。 複合クエリは、既存のクエリに関する複数レベルの関連情報を取得し、結合されたデータを単一のフラット化されたクエリ結果として表示します。
複合クエリを使用すると、次のオプションもあります-
- ユーザーの属性選択に基づいて、不要なテーブルとフィールドを削除するには、SQLプルーニングオプションを選択します。
- ORDER BYおよびGROUP BY句を設定します。
- 複合クエリの結果セットに対するフィルターとしてWHERE句を設定します。
上記の演算子を構成して、より強力なクエリを作成できます。 DocumentDBはネストされたコレクションをサポートしているため、構成は連結またはネストできます。
この例の次のドキュメントを考えてみましょう。
連結クエリの例を見てみましょう。
連結クエリ
以下は、最初の子 givenName がMichelleである家族のIDと場所を取得するクエリです。
上記のクエリを実行すると、次の出力が生成されます。
連結クエリの別の例を考えてみましょう。
連結クエリ
以下は、最初の子が3を超えるすべてのドキュメントを返すクエリです。
上記のクエリを実行すると、次の出力が生成されます。
[
{
"id": "WakefieldFamily",
"parents": [
{
"familyName": "Wakefield",
"givenName": "Robin"
},
{
"familyName": "Miller",
"givenName": "Ben"
}
],
"children": [
{
"familyName": "Merriam",
"givenName": "Jesse",
"gender": "female",
"grade": 6,
"pets": [
{
"givenName": "Charlie Brown",
"type": "Dog"
},
{
"givenName": "Tiger",
"type": "Cat"
},
{
"givenName": "Princess",
"type": "Cat"
}
]
},
{
"familyName": "Miller",
"givenName": "Lisa",
"gender": "female",
"grade": 3,
"pets": [
{
"givenName": "Jake",
"type": "Snake"
}
]
}
],
"location": {
"state": "NY",
"county": "Manhattan",
"city": "NY"
},
"isRegistered": false,
"_rid": "Ic8LAJFujgECAAAAAAAAAA==",
"_ts": 1450541623,
"_self": "dbs/Ic8LAA==/colls/Ic8LAJFujgE=/docs/Ic8LAJFujgECAAAAAAAAAA==/",
"_etag": "\"00000500-0000-0000-0000-567582370000\"",
"_attachments": "attachments/"
},
{
"id": "AndersenFamily",
"lastName": "Andersen",
"parents": [
{
"firstName": "Thomas",
"relationship": "father"
},
{
"firstName": "Mary Kay",
"relationship": "mother"
}
],
"children": [
{
"firstName": "Henriette Thaulow",
"gender": "female",
"grade": 5,
"pets": [
{
"givenName": "Fluffy",
"type": "Rabbit"
}
]
}
],
"location": {
"state": "WA",
"county": "King",
"city": "Seattle"
},
"isRegistered": true,
"_rid": "Ic8LAJFujgEEAAAAAAAAAA==",
"_ts": 1450541624,
"_self": "dbs/Ic8LAA==/colls/Ic8LAJFujgE=/docs/Ic8LAJFujgEEAAAAAAAAAA==/",
"_etag": "\"00000700-0000-0000-0000-567582380000\"",
"_attachments": "attachments/"
}
]
ネストされたクエリの*例*を見てみましょう。
ネストされたクエリ
以下は、すべての親を繰り返し、 familyName がSmithであるドキュメントを返すクエリです。
上記のクエリを実行すると、次の出力が生成されます。
ネストされたクエリの*別の例*を考えてみましょう。
ネストされたクエリ
以下は、すべての familyName を返すクエリです。
上記のクエリを実行すると、次の出力が生成されます。