Praca z tablicami i obiektami w usłudze Azure Cosmos DB for NoSQL
DOTYCZY: NoSQL
Oto element, który jest używany w przykładach w tym artykule.
{
"name": "Sondon Fins",
"categories": [
{ "name": "swim" },
{ "name": "gear"}
],
"metadata": {
"sku": "73310",
"manufacturer": "AdventureWorks"
},
"priceInUSD": 132.35,
"priceInCAD": 174.50
}
Tablice
Tablice można tworzyć przy użyciu wartości statycznych, jak pokazano w poniższym przykładzie.
SELECT
[p.priceInUSD, p.priceInCAD] AS priceData
FROM products p
[
{
"priceData": [
132.35,
174.5
]
}
]
Możesz również użyć ARRAY
wyrażenia , aby skonstruować tablicę z wyników podzapytania . To zapytanie pobiera wszystkie odrębne kategorie.
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"
]
}
]
Iteracja
Interfejs API dla noSQL zapewnia obsługę iteracji nad tablicami JSON ze IN
słowem kluczowym w FROM
źródle.
Na przykład następne zapytanie wykonuje iterację tags
dla każdego elementu w kontenerze. Dane wyjściowe dzielą wartość tablicy i spłaszczają wyniki w jedną tablicę.
SELECT
*
FROM
products IN products.categories
[
{
"name": "swim"
},
{
"name": "gear"
}
]
Dalsze filtrowanie poszczególnych wpisów tablicy można filtrować, jak pokazano w poniższym przykładzie:
SELECT VALUE
p.name
FROM
p IN p.categories
WHERE
p.name LIKE "ge%"
Wyniki są następujące:
[
"gear"
]
Można również agregować wyniki iteracji tablicy. Na przykład następujące zapytanie zlicza liczbę tagów:
SELECT VALUE
COUNT(1)
FROM
p IN p.categories
Wyniki są następujące:
[
2
]
Uwaga
W przypadku używania słowa kluczowego IN
do iteracji nie można filtrować ani projektować żadnych właściwości poza tablicą. Zamiast tego należy używać sprzężeń własnych.