以下に示す要件に従って、コレクションに格納されている JSON ドキュメントから結果を取得する SQL クエリを CosmosDB クエリ エディターで作成する必要があります。
JSON の例
{
"id": "abcdabcd-1234-1234-1234-abcdabcdabcd",
"source": "Example",
"data": [
{
"Laptop": {
"New": "yes",
"Used": "no",
"backlight": "yes",
"warranty": "yes"
}
},
{
"Mobile": [
{
"order": 1,
"quantity": 2,
"price": 350,
"color": "Black",
"date": "07202019"
},
{
"order": 2,
"quantity": 1,
"price": 600,
"color": "White",
"date": "07202019"
}
]
},
{
"Accessories": [
{
"covers": "yes",
"cables": "few"
}
]
}
]
}
要件: 特定の「日付」の「保証」(ラップトップ)、「数量」(モバイル)、「色」(モバイル)、「ケーブル」(アクセサリ) を選択します (例: 07202019)。
次のクエリを試しました
SELECT
c.data[0].Laptop.warranty,
c.data[1].Mobile[0].quantity,
c.data[1].Mobile[0].color,
c.data[2].Accessories[0].cables
FROM c
WHERE ARRAY_CONTAINS(c.data[1].Mobile, {date : '07202019'}, true)
上記のクエリからの元の出力:
[
{
"warranty": "yes",
"quantity": 2,
"color": "Black",
"cables": "few"
}
]
しかし、配列「モバイル」にすべての注文の詳細が含まれている、この期待される出力を取得するにはどうすればよいですか。
[
{
"warranty": "yes",
"quantity": 2,
"color": "Black",
"cables": "few"
},
{
"warranty": "yes",
"quantity": 1,
"color": "White",
"cables": "few"
}
]
ハードコーディングされた c.data[1].Mobile[0].quantity 、つまり 'Mobile[0]' を書いたので、出力で返されるエントリは 1 つだけです (つまり、最初のエントリ)。リストされる配列内のエントリ