Bagikan melalui


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