Kata kunci di Azure Cosmos DB untuk NoSQL
BERLAKU UNTUK: NoSQL
Bahasa kueri Azure Cosmos DB for NoSQL menyertakan sekumpulan kata kunci khusus yang digunakan dalam kueri untuk fungsionalitas yang diperluas.
BETWEEN
Kata BETWEEN
kunci mengevaluasi ke boolean yang menunjukkan apakah nilai target berada di antara dua nilai yang ditentukan, inklusif.
Anda dapat menggunakan BETWEEN
kata kunci dengan WHERE
klausul untuk mengekspresikan kueri yang memfilter hasil terhadap rentang string atau nilai numerik. Misalnya, kueri berikut mengembalikan semua item di mana harga antara 17.25
dan 25.50
, sekali lagi inklusif.
SELECT VALUE
p.price
FROM
products p
WHERE
p.price BETWEEN 17.25 AND 25.50
[
20
]
Anda juga dapat menggunakan BETWEEN
kata kunci dalam SELECT
klausul, seperti dalam contoh berikut.
SELECT
(p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
p.price
FROM
products p
[
{
"booleanLessThanTen": false,
"price": 20.0
},
{
"booleanLessThanTen": true,
"price": 7.5
}
]
Catatan
Dalam API untuk NoSQL, tidak seperti ANSI SQL, Anda dapat mengekspresikan kueri rentang terhadap properti jenis campuran. Misalnya, price
mungkin berupa angka seperti 5.0
di beberapa item dan string seperti fifteenDollars
di item lainnya. Dalam kasus ini, seperti dalam JavaScript, perbandingan antara dua jenis yang berbeda menghasilkan , sehingga item dilewati undefined
.
NYATA
Kata DISTINCT
kunci menghilangkan duplikat dalam hasil kueri yang diproyeksikan.
Dalam contoh ini, kueri memproyeksikan nilai untuk setiap kategori produk. Jika dua kategori setara, hanya satu kemunculan yang dikembalikan dalam hasil.
SELECT DISTINCT VALUE
p.category
FROM
products p
[
"Accessories",
"Tools"
]
Anda juga dapat memproyekan nilai meskipun bidang target tidak ada. Dalam hal ini, bidang tidak ada di salah satu item, sehingga kueri mengembalikan objek kosong untuk nilai unik tertentu tersebut.
SELECT DISTINCT
p.category
FROM
products p
Hasilnya adalah:
[
{},
{
"category": "Accessories"
},
{
"category": "Tools"
}
]
LIKE
Mengembalikan nilai boolean tergantung pada apakah string karakter tertentu cocok dengan pola tertentu. Pola dapat mencakup karakter reguler dan karakter kartubebas.
Tip
Anda dapat menulis kueri yang setara secara logis menggunakan LIKE
kata kunci atau RegexMatch
fungsi sistem. Anda akan mengamati pemanfaatan indeks yang sama terlepas dari opsi mana yang Anda pilih. Pilihan opsi mana yang akan digunakan sebagian besar didasarkan pada preferensi sintaksis.
Catatan
Karena LIKE
bisa memanfaatkan indeks, Anda harus membuat indeks rentang untuk properti yang Anda bandingkan menggunakan LIKE
.
Anda bisa menggunakan karakter kartubebas berikut dengan LIKE:
Deskripsi | Contoh | |
---|---|---|
% |
Setiap string karakter nol atau lebih. | WHERE c.description LIKE "%SO%PS%" |
_ (garis bawah) |
Setiap karakter tunggal. | WHERE c.description LIKE"%SO_PS%" |
[ ] |
Setiap karakter tunggal dalam rentang yang ditentukan ([a-f] ) atau set ([abcdef] ). |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
Karakter tunggal apa pun yang tidak berada dalam rentang yang ditentukan ([^a-f] ) atau set ([^abcdef] ). |
WHERE c.description LIKE "%SO[^abc]PS%" |
Karakter %
ini cocok dengan string karakter nol atau lebih. Misalnya, dengan menempatkan %
di awal dan akhir pola, kueri berikut mengembalikan semua item di mana bidang yang ditentukan berisi frasa sebagai substring:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%driver%"
Jika Anda hanya menggunakan %
karakter di akhir pola, Anda hanya akan mengembalikan item dengan deskripsi yang dimulai dengan fruit
:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%glove"
Demikian pula, kartubebas di awal pola menunjukkan bahwa Anda ingin mencocokkan nilai dengan nilai yang ditentukan sebagai awalan:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "Road%"
Kata NOT
kunci membalikkan hasil LIKE
evaluasi ekspresi kata kunci. Contoh ini mengembalikan semua item yang tidak cocok dengan LIKE
ekspresi.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name NOT LIKE "%winter%"
Anda dapat mencari pola yang menyertakan satu atau beberapa karakter kartubebas menggunakan ESCAPE
klausa. Misalnya, jika Anda ingin mencari deskripsi yang berisi string 20%
, Anda tidak ingin menafsirkan %
sebagai karakter kartubebas. Contoh ini menafsirkan sebagai karakter escape sehingga Anda dapat lolos ^
dari instans tertentu dari %
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.description LIKE "%20^%%" ESCAPE "^"
Anda dapat mengapit karakter kartubebas dalam tanda kurung untuk memperlakukannya sebagai karakter harfiah. Saat Mengapit karakter kartubebas dalam tanda kurung, Anda akan menghapus atribut khusus apa pun. Tabel ini mencakup contoh karakter harfiah.
Nilai yang diurai | |
---|---|
LIKE "20-30[%]" |
20-30% |
LIKE "[_]n" |
_n |
LIKE "[ [ ]" |
[ |
LIKE "]" |
] |
IN
IN
Gunakan kata kunci untuk memeriksa apakah nilai yang ditentukan cocok dengan nilai apa pun dalam daftar. Misalnya, kueri berikut mengembalikan semua item di mana kategori cocok dengan setidaknya salah satu nilai dalam daftar.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
Tip
Jika Anda menyertakan kunci partisi Anda dalam IN
filter, kueri Anda akan secara otomatis memfilter hanya ke partisi yang relevan.
TOP
Kata TOP
kunci mengembalikan jumlah pertama N
hasil kueri dalam urutan yang tidak terdefinisi. Sebagai praktik terbaik, gunakan TOP
dengan ORDER BY
klausul untuk membatasi hasil ke jumlah pertama N
nilai yang diurutkan. Menggabungkan kedua klausa ini adalah satu-satunya cara untuk menunjukkan baris TOP
mana yang terpengaruh secara prediktif.
Anda dapat menggunakan TOP
dengan nilai konstanta, seperti dalam contoh berikut, atau dengan nilai variabel menggunakan kueri berparameter.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC