共用方式為


在適用於 NoSQL 的 Azure Cosmos DB 中使用數位和物件

適用於: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"
    ]
  }
]

反覆運算

適用於 NoSQL 的 API 支援逐一查看 JSON 陣列,並在IN來源中使用 FROM 關鍵詞

例如,下一個查詢會針對容器中的每個專案執行反覆 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 關鍵字進行反覆專案時,您無法篩選或投影陣列以外的任何屬性。 相反地,您應該使用 自我聯結