Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: NoSQL
Här är ett objekt som används i exempel i den här artikeln.
{
"name": "Sondon Fins",
"categories": [
{ "name": "swim" },
{ "name": "gear"}
],
"metadata": {
"sku": "73310",
"manufacturer": "AdventureWorks"
},
"priceInUSD": 132.35,
"priceInCAD": 174.50
}
Matriser
Du kan konstruera matriser med statiska värden, som du ser i följande exempel.
SELECT
[p.priceInUSD, p.priceInCAD] AS priceData
FROM products p
[
{
"priceData": [
132.35,
174.5
]
}
]
Du kan också använda ARRAY
uttrycket för att konstruera en matris från en underfrågas resultat. Den här frågan hämtar alla distinkta kategorier.
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"
]
}
]
Iteration
API:et för NoSQL ger stöd för iterering över JSON-matriser med nyckelordet IN
FROM
i källan.
Till exempel utför nästa fråga iteration över tags
för varje objekt i containern. Utdata delar upp matrisvärdet och jämnar ut resultatet till en enda matris.
SELECT
*
FROM
products IN products.categories
[
{
"name": "swim"
},
{
"name": "gear"
}
]
Du kan filtrera ytterligare på varje enskild post i matrisen, som du ser i följande exempel:
SELECT VALUE
p.name
FROM
p IN p.categories
WHERE
p.name LIKE "ge%"
Resultatet är:
[
"gear"
]
Du kan också aggregera över resultatet av en matris-iteration. Följande fråga räknar till exempel antalet taggar:
SELECT VALUE
COUNT(1)
FROM
p IN p.categories
Resultatet är:
[
2
]
Kommentar
När du använder nyckelordet IN
för iteration kan du inte filtrera eller projicera några egenskaper utanför matrisen. I stället bör du använda självkopplingar.