在適用於 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
關鍵字進行反覆專案時,您無法篩選或投影陣列以外的任何屬性。 相反地,您應該使用 自我聯結。