Práce s poli a objekty ve službě Azure Cosmos DB for NoSQL
PLATÍ PRO: NoSQL
Tady je položka, která se používá v příkladech v tomto článku.
{
"name": "Sondon Fins",
"categories": [
{ "name": "swim" },
{ "name": "gear"}
],
"metadata": {
"sku": "73310",
"manufacturer": "AdventureWorks"
},
"priceInUSD": 132.35,
"priceInCAD": 174.50
}
Pole
Pole můžete vytvořit pomocí statických hodnot, jak je znázorněno v následujícím příkladu.
SELECT
[p.priceInUSD, p.priceInCAD] AS priceData
FROM products p
[
{
"priceData": [
132.35,
174.5
]
}
]
Pomocí výrazu ARRAY
můžete také vytvořit pole z výsledků poddotazů. Tento dotaz získá všechny různé 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"
]
}
]
Iterace
Rozhraní API pro NoSQL poskytuje podporu iterace přes pole JSON s IN
klíčovým slovem ve zdroji FROM
.
Například další dotaz provede iteraci tags
pro každou položku v kontejneru. Výstup rozdělí maticovou hodnotu a zploští výsledky do jediného pole.
SELECT
*
FROM
products IN products.categories
[
{
"name": "swim"
},
{
"name": "gear"
}
]
Můžete dále filtrovat jednotlivé položky pole, jak je znázorněno v následujícím příkladu:
SELECT VALUE
p.name
FROM
p IN p.categories
WHERE
p.name LIKE "ge%"
Výsledky jsou následující:
[
"gear"
]
Můžete také agregovat výsledek iterace pole. Například následující dotaz spočítá počet značek:
SELECT VALUE
COUNT(1)
FROM
p IN p.categories
Výsledky jsou následující:
[
2
]
Poznámka:
Při použití klíčového IN
slova pro iteraci nelze filtrovat ani projektovat žádné vlastnosti mimo pole. Místo toho byste měli použít samoobslužná spojení.