다음을 통해 공유


Azure Cosmos DB for NoSQL에서 배열 및 개체 작업

적용 대상: NoSQL

다음은 이 문서의 예제에서 사용되는 항목입니다.

{
  "name": "Sondon Fins",
  "categories": [
     { "name": "swim" },
     { "name": "gear"}
  ],
  "metadata": {
    "sku": "73310",
    "manufacturer": "AdventureWorks"
  },
  "priceInUSD": 132.35,
  "priceInCAD": 174.50
}

배열

다음 예제에 표시된 대로 정적 값을 사용하여 배열을 생성할 수 있습니다.

SELECT
  [p.priceInUSD, p.priceInCAD] AS priceData
FROM products p
[
  {
    "priceData": [
      132.35,
      174.5
    ]
  }
]

ARRAY을 사용하여 하위 쿼리의 결과에서 배열을 생성할 수도 있습니다. 이 쿼리는 모든 고유 범주를 가져옵니다.

SELECT
    p.id,
    ARRAY (SELECT DISTINCT VALUE c.name FROM c IN p.categories) AS categoryNames
FROM
    products p
[
  {
    "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "categoryNames": [
      "swim",
      "gear"
    ]
  }
]

반복

API for NoSQL은 FROM 원본의 IN 키워드를 사용하여 JSON 배열에 대한 반복을 지원합니다.

예를 들어 다음 쿼리는 컨테이너에서 각 항목의 tags에 대해 반복을 수행합니다. 출력은 배열 값을 분할하고 결과를 단일 배열로 평면화합니다.

SELECT
    *
FROM 
  products IN products.categories
[
  {
    "name": "swim"
  },
  {
    "name": "gear"
  }
]

다음 예제에 표시된 대로 배열의 각 개별 항목을 추가로 필터링할 수 있습니다.

SELECT VALUE
    p.name
FROM
    p IN p.categories
WHERE
    p.name LIKE "ge%"

결과는 다음과 같습니다.

[
  "gear"
]

배열 반복의 결과를 집계할 수도 있습니다. 예를 들어 다음 쿼리는 모든 태그의 수를 계산합니다.

SELECT VALUE
    COUNT(1)
FROM
    p IN p.categories

결과는 다음과 같습니다.

[
  2
]

참고 항목

반복에 IN 키워드를 사용하는 경우 배열 외부의 속성을 필터링하거나 프로젝션할 수 없습니다. 대신 셀프 조인을 사용해야 합니다.