Interfejs API zapytań JavaScript w usłudze Azure Cosmos DB
DOTYCZY: NoSQL
Oprócz wykonywania zapytań przy użyciu interfejsu API dla NoSQL w usłudze Azure Cosmos DB zestaw SDK po stronie serwera usługi Azure Cosmos DB udostępnia interfejs Języka JavaScript do wykonywania zoptymalizowanych zapytań w procedurach składowanych i wyzwalaczach usługi Azure Cosmos DB. Nie musisz pamiętać o języku SQL, aby używać tego interfejsu języka JavaScript. Interfejs API zapytań Języka JavaScript umożliwia programowe kompilowanie zapytań przez przekazywanie funkcji predykatu do sekwencji wywołań funkcji z składnią podobną do wbudowanych tablic ECMAScript5 i popularnych bibliotek Języka JavaScript, takich jak Lodash. Zapytania są analizowane przez środowisko uruchomieniowe języka JavaScript i wydajnie wykonywane przy użyciu indeksów usługi Azure Cosmos DB.
Obsługiwane funkcje języka JavaScript
Funkcja | Opis |
---|---|
chain() ... .value([callback] [, options]) |
Uruchamia wywołanie łańcuchowe, które musi zostać zakończone wartością(). |
filter(predicateFunction [, options] [, callback]) |
Filtruje dane wejściowe przy użyciu funkcji predykatu, która zwraca wartość true/false, aby filtrować dokumenty wejściowe w/wy do wynikowego zestawu. Ta funkcja zachowuje się podobnie do klauzuli WHERE w języku SQL. |
flatten([isShallow] [, options] [, callback]) |
Łączy i spłaszcza tablice z każdego elementu wejściowego w jedną tablicę. Ta funkcja działa podobnie jak SelectMany w linQ. |
map(transformationFunction [, options] [, callback]) |
Stosuje projekcję daną funkcję przekształcania, która mapuje każdy element wejściowy na obiekt lub wartość języka JavaScript. Ta funkcja zachowuje się podobnie do klauzuli SELECT w języku SQL. |
pluck([propertyName] [, options] [, callback]) |
Ta funkcja jest skrótem do mapy, która wyodrębnia wartość pojedynczej właściwości z każdego elementu wejściowego. |
sortBy([predicate] [, options] [, callback]) |
Tworzy nowy zestaw dokumentów przez sortowanie dokumentów w strumieniu dokumentu wejściowego w kolejności rosnącej przy użyciu danego predykatu. Ta funkcja zachowuje się podobnie do klauzuli ORDER BY w języku SQL. |
sortByDescending([predicate] [, options] [, callback]) |
Tworzy nowy zestaw dokumentów przez sortowanie dokumentów w strumieniu dokumentu wejściowego w kolejności malejącej przy użyciu danego predykatu. Ta funkcja zachowuje się podobnie do klauzuli ORDER BY x DESC w języku SQL. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Wykonuje samosprzężenie z tablicą wewnętrzną i dodaje wyniki z obu stron jako krotki do projekcji wyników. Na przykład dołączenie do dokumentu osoby z person.pets spowodowałoby produkcję krotek [person, pet] . Jest to podobne do selectMany na platformie .NET LINQ. |
W przypadku dołączania do funkcji predykatu i/lub selektora następujące konstrukcje języka JavaScript są automatycznie zoptymalizowane pod kątem uruchamiania bezpośrednio w indeksach usługi Azure Cosmos DB:
- Proste operatory:
=
+
-
*
/
%
|
^
&
==
!=
===
!==
<
>
<=
>=
||
&&
<<
>>
>>>
~
- Literały, w tym literał obiektu:
{}
- var, return
Następujące konstrukcje języka JavaScript nie są zoptymalizowane pod kątem indeksów usługi Azure Cosmos DB:
- Przepływ sterowania:
if
for
while
- Wywołania funkcji
Aby uzyskać więcej informacji, zobacz dokumentację języka JavaScript po stronie serwera usługi Azure Cosmos DB.
Ściągawka języka SQL do języka JavaScript
W poniższej tabeli przedstawiono różne zapytania SQL i odpowiadające im zapytania JavaScript. Podobnie jak w przypadku zapytań SQL, właściwości (na przykład item.id
) są uwzględniane wielkości liter.
Uwaga
__
(podwójne podkreślenie) jest aliasem funkcji getContext().getCollection()
podczas korzystania z interfejsu API zapytań języka JavaScript.
SQL | Interfejs API zapytań JavaScript | Opis |
---|---|---|
WYBRAĆ* Z dokumentacji |
__.map(function(doc) { zwraca dokument; }); |
Wyniki we wszystkich dokumentach (podzielonych na strony z tokenem kontynuacji), tak jak to jest. |
WYBRAĆ docs.id, docs.message AS msg, docs.actions Z dokumentacji |
__.map(function(doc) { return { id: doc.id, msg: doc.message, actions:doc.actions }; }); |
Projektuje identyfikator, komunikat (alias do msg) i akcję ze wszystkich dokumentów. |
WYBRAĆ* Z dokumentacji WHERE docs.id="X998_Y998" |
__.filter(function(doc) { return doc.id "X998_Y998"; }); |
Zapytania dotyczące dokumentów z predykatem: id = "X998_Y998". |
WYBRAĆ* Z dokumentacji WHERE ARRAY_CONTAINS(docs). Tagi, 123) |
__.filter(function(x) { zwróć x.Tags && x.Tags.indexOf(123) > -1; }); |
Zapytania dotyczące dokumentów, które mają właściwość Tags, a Tagi to tablica zawierająca wartość 123. |
SELECT docs.id, docs.message AS msg Z dokumentacji 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(); |
Wykonuje zapytania dotyczące dokumentów z predykatem, id = "X998_Y998", a następnie projektuje identyfikator i komunikat (alias do msg). |
TAG SELECT VALUE Z dokumentacji TAG JOIN W dokumentacji. Tagi ORDER BY docs._ts |
__.chain() .filter(function(doc) { zwróć dokument. Tags && Array.isArray(doc. Tagi); }) .sortBy(function(doc) { zwracanie doc._ts; }) .pluck("Tags") .flatten() .value() |
Filtry dla dokumentów, które mają właściwość tablicy, Tagi i sortuje wynikowe dokumenty według właściwości systemu sygnatury czasowej _ts, a następnie projekty + spłaszcza tablicę Tagi. |
Następne kroki
Dowiedz się więcej pojęć i instrukcji dotyczących pisania i używania procedur składowanych, wyzwalaczy i funkcji zdefiniowanych przez użytkownika w usłudze Azure Cosmos DB:
- Jak pisać procedury składowane i wyzwalacze przy użyciu interfejsu API zapytań Języka JavaScript
- Praca z procedurami składowanymi, wyzwalaczami i funkcjami zdefiniowanymi przez użytkownika w usłudze Azure Cosmos DB
- Jak używać procedur składowanych, wyzwalaczy, funkcji zdefiniowanych przez użytkownika w usłudze Azure Cosmos DB
- Dokumentacja interfejsu API po stronie serwera w usłudze Azure Cosmos DB
- JavaScript ES6 (ECMA 2015)