1

以下に示す要件に従って、コレクションに格納されている 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 つだけです (つまり、最初のエントリ)。リストされる配列内のエントリ

4

1 に答える 1