Bekerja dengan array dan objek di Azure Cosmos DB untuk NoSQL
BERLAKU UNTUK: NoSQL
Berikut adalah item yang digunakan dalam contoh di seluruh artikel ini.
{
"name": "Sondon Fins",
"categories": [
{ "name": "swim" },
{ "name": "gear"}
],
"metadata": {
"sku": "73310",
"manufacturer": "AdventureWorks"
},
"priceInUSD": 132.35,
"priceInCAD": 174.50
}
Larik
Anda dapat membuat array menggunakan nilai statis, seperti yang diperlihatkan dalam contoh berikut.
SELECT
[p.priceInUSD, p.priceInCAD] AS priceData
FROM products p
[
{
"priceData": [
132.35,
174.5
]
}
]
Anda juga dapat menggunakan ARRAY
ekspresi untuk membuat array dari hasil subkueri . Kueri ini mendapatkan semua kategori yang berbeda.
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"
]
}
]
Perulangan
API untuk NoSQL menyediakan dukungan untuk iterasi melalui array JSON, dengan IN
kata kunci di sumbernya FROM
.
Sebagai contoh, kueri berikutnya melakukan iterasi tags
untuk setiap item dalam kontainer. Output membagi nilai array dan meratakan hasilnya menjadi satu array.
SELECT
*
FROM
products IN products.categories
[
{
"name": "swim"
},
{
"name": "gear"
}
]
Anda dapat memfilter lebih jauh pada setiap entri larik individual, seperti yang diperlihatkan dalam contoh berikut:
SELECT VALUE
p.name
FROM
p IN p.categories
WHERE
p.name LIKE "ge%"
Hasilnya adalah:
[
"gear"
]
Anda juga dapat mengagregasi hasil iterasi larik. Misalnya, kueri berikut menghitung jumlah tag:
SELECT VALUE
COUNT(1)
FROM
p IN p.categories
Hasilnya adalah:
[
2
]
Catatan
Saat menggunakan kata kunci untuk iterasi IN
, Anda tidak dapat memfilter atau memproyeksikan properti apa pun di luar array. Sebagai gantinya, Anda harus menggunakan gabungan mandiri.