Tömbök és objektumok használata az Azure Cosmos DB for NoSQL-ben
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Íme egy elem, amelyet a jelen cikk példáiban használunk.
{
"name": "Sondon Fins",
"categories": [
{ "name": "swim" },
{ "name": "gear"}
],
"metadata": {
"sku": "73310",
"manufacturer": "AdventureWorks"
},
"priceInUSD": 132.35,
"priceInCAD": 174.50
}
Tömbök
A tömböket statikus értékekkel is létrehozhatja, ahogy az az alábbi példában is látható.
SELECT
[p.priceInUSD, p.priceInCAD] AS priceData
FROM products p
[
{
"priceData": [
132.35,
174.5
]
}
]
A kifejezéssel ARRAY
tömböt is létrehozhat egy alquery eredményeiből. Ez a lekérdezés az összes különböző kategóriát lekéri.
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"
]
}
]
Iteráció
A NoSQL API támogatja a JSON-tömbök iterálását a forrásban lévő FROM
kulcsszóval IN
együtt.
A következő lekérdezés például iterációt tags
hajt végre a tároló minden eleméhez. A kimenet felosztja a tömb értékét, és egyetlen tömbre osztja az eredményeket.
SELECT
*
FROM
products IN products.categories
[
{
"name": "swim"
},
{
"name": "gear"
}
]
A tömb minden egyes bejegyzésére tovább szűrhet, ahogy az alábbi példában látható:
SELECT VALUE
p.name
FROM
p IN p.categories
WHERE
p.name LIKE "ge%"
Az eredmény a következő:
[
"gear"
]
A tömb iteráció eredménye alapján is összesíthető. A következő lekérdezés például megszámolja a címkék számát:
SELECT VALUE
COUNT(1)
FROM
p IN p.categories
Az eredmény a következő:
[
2
]
Feljegyzés
Az iteráció kulcsszójának használatakor IN
a tömbön kívüli tulajdonságok nem szűrhetők és nem vetíthetők ki. Ehelyett önillesztéseket kell használnia.