API kueri JavaScript di Azure Cosmos DB
BERLAKU UNTUK: NoSQL
Selain mengeluarkan kueri menggunakan API untuk NoSQL di Azure Cosmos DB, SDK sisi server Azure Cosmos DB menyediakan antarmuka JavaScript untuk melakukan kueri yang dioptimalkan di Prosedur dan Pemicu Tersimpan Azure Cosmos DB. Anda tidak perlu mewaspadai bahasa SQL untuk menggunakan antarmuka JavaScript ini. API kueri JavaScript memungkinkan Anda membuat kueri secara terprogram dengan meneruskan fungsi predikat ke dalam urutan panggilan fungsi, dengan sintaks yang mirip dengan bawaan array ECMAScript5 dan pustaka JavaScript populer seperti Lodash. Kueri diurai oleh runtime JavaScript dan dijalankan secara efisien dalam Microsoft Azure Cosmos DB.
Fungsi JavaScript yang didukung
Fungsi | Keterangan |
---|---|
chain() ... .value([callback] [, options]) |
Memulai panggilan berantai yang harus diakhiri dengan nilai(). |
filter(predicateFunction [, options] [, callback]) |
Memfilter input menggunakan fungsi predikat yang mengembalikan benar/salah untuk memfilter dokumen input yang masuk/keluar ke dalam set yang dihasilkan. Fungsi ini berperilaku mirip dengan klausa WHERE di SQL. |
flatten([isShallow] [, options] [, callback]) |
Menggabungkan dan meratakan array dari setiap item input ke dalam satu array. Fungsi ini berperilaku mirip dengan SelectMany di LINQ. |
map(transformationFunction [, options] [, callback]) |
Menerapkan proyeksi mengingat fungsi transformasi yang memetakan setiap item input ke objek atau nilai JavaScript. Fungsi ini berperilaku mirip dengan klausa SELECT di SQL. |
pluck([propertyName] [, options] [, callback]) |
Fungsi ini adalah pintasan untuk peta yang mengekstrak nilai properti tunggal dari setiap item input. |
sortBy([predicate] [, options] [, callback]) |
Menghasilkan set dokumen baru dengan mengurutkan dokumen dalam aliran dokumen input dalam urutan naik dengan menggunakan predikat yang diberikan. Fungsi ini berperilaku mirip dengan klausa ORDER BY di SQL. |
sortByDescending([predicate] [, options] [, callback]) |
Menghasilkan set dokumen baru dengan mengurutkan dokumen dalam aliran dokumen input dalam urutan naik dengan menggunakan predikat yang diberikan. Fungsi ini berperilaku mirip dengan klausa ORDER BY x DESC di SQL. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Melakukan gabungan mandiri dengan array dalam dan menambahkan hasil dari kedua sisi sebagai tuple ke proyeksi hasil. Misalnya, menggabungkan dokumen seseorang dengan person.pets akan menghasilkan tupel [seseorang, hewan peliharaan]. Ini mirip dengan SelectMany di .NET LINQ. |
Ketika disertakan dalam fungsi predikat dan/atau pemilih, konstruksi JavaScript berikut ini secara otomatis dioptimalkan untuk berjalan langsung pada indeks Microsoft Azure Cosmos DB:
- Operator sederhana:
=
+
-
*
/
%
|
^
&
==
!=
===
!==
<
>
<=
>=
||
&&
<<
>>
>>>
~
- Harfiah, termasuk objek harfiah:
{}
- var, kembali
Konstruksi JavaScript berikut tidak dioptimalkan untuk indeks Microsoft Azure Cosmos DB:
- Alur kontrol:
if
for
while
- Panggilan fungsi
Untuk informasi selengkapnya, lihat Dokumentasi JavaScript Sisi Server Azure Cosmos DB.
Lembar contekan SQL ke JavaScript
Tabel berikut menyajikan berbagai kueri SQL dan kueri JavaScript yang sesuai. Seperti halnya kueri SQL, properti (misalnya, item.id
) peka huruf besar/kecil.
Catatan
__
(garis bawah ganda) adalah sebuah alias saat getContext().getCollection()
menggunakan API kueri JavaScript.
SQL | API Kueri JavaScript | Keterangan |
---|---|---|
PILIH * DARI dok |
__.map(function(doc) { return doc; }); |
Menghasilkan semua dokumen (paginasi dengan token kelanjutan) apa adanya. |
PILIH docs.id, docs.message AS msg, docs.actions DARI dok |
__.map(function(doc) { return { id: doc.id, msg: doc.message, actions:doc.actions }; }); |
Memproyeksikan id, pesan (alias ke msg), dan tindakan dari semua dokumen. |
PILIH * DARI dok WHERE docs.id="X998_Y998" |
__.filter(function(doc) { return doc.id ==="X998_Y998"; }); |
Kueri untuk dokumen dengan predikat: id = "X998_Y998". |
PILIH * DARI dok WHERE ARRAY_CONTAINS(docs.Tags, 123) |
__.filter(function(doc) { return x.Tags && x.Tags.indexOf(123) > -1; }); |
Kueri untuk dokumen yang memiliki properti Tag dan Tag adalah array yang berisi nilai 123. |
SELECT docs.id, docs.message AS msg DARI dok WHERE docs.id="X998_Y998" |
__.chain() .filter(function(doc) { return doc.id ==="X998_Y998"; }) .map(function(doc) { return { id: doc.id, msg: doc.message }; }) .value(); |
Kueri untuk dokumen dengan predikat, id = "X998_Y998", lalu memproyeksikan id dan pesan (alias ke msg). |
PILIH tag NILAI DARI dok GABUNG tag DI dokumen. Tag ORDER BY docs._ts |
__.chain() .filter(function(doc) { return doc.Tags && Array.isArray(doc.Tags); }) .sortBy(function(doc) { return doc._ts; }) .pluck("Tags") .flatten() .value() |
Filter untuk dokumen yang memiliki properti array, Tag, dan mengurutkan dokumen yang dihasilkan menurut properti sistem tanda waktu _ts, lalu proyeksikan + ratakan array Tag. |
Langkah berikutnya
Pelajari selengkapnya konsep dan cara menulis serta menggunakan prosedur tersimpan, pemicu, dan fungsi yang ditentukan pengguna di Microsoft Azure Cosmos DB:
- Cara menulis prosedur tersimpan dan pemicu menggunakan API Kueri JavaScript
- Bekerja dengan prosedur tersimpan, pemicu, dan fungsi yang ditentukan pengguna di Microsoft Azure Cosmos DB
- Cara menggunakan prosedur tersimpan, pemicu, fungsi yang ditentukan pengguna di Microsoft Azure Cosmos DB
- Referensi API sisi server Microsoft Azure Cosmos DB JavaScript
- JavaScript ES6 (ECMA 2015)