Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
| Function | 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 włączyć lub wykluczyć dokumenty wejściowe w wynikowym zestawie. Ta funkcja zachowuje się podobnie do klauzuli WHERE w języku SQL. |
flatten([isShallow] [, options] [, callback]) |
Łączy tablice z każdego elementu wejściowego i spłaszcza je w jedną tablicę. Ta funkcja działa podobnie jak SelectMany w linQ. |
map(transformationFunction [, options] [, callback]) |
Stosuje projekcję danej funkcji 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 połączenie dokumentu osoby z osoba.zwierzęta spowodowałoby utworzenie krotek [osoba, zwierzę]. 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:
ifforwhile - Wywołania funkcji
Aby uzyskać więcej informacji, zobacz dokumentację języka JavaScript po stronie serwera usługi Azure Cosmos DB.
Przewodnik SQL do 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) rozróżniają wielkość liter.
Uwaga / Notatka
__ (podwójne podkreślenie) to alias getContext().getCollection() używany podczas korzystania z interfejsu API zapytań Języka JavaScript.
| SQL | JavaScript Query API | Opis |
|---|---|---|
| WYBIERZ* Z dokumentacji |
__.map(function(doc) { zwraca dokument; }); |
Wyniki we wszystkich dokumentach (podzielonych na strony z tokenem kontynuacji) w obecnej formie. |
| WYBIERZ docs.id, docs.message AS msg, docs.actions Z dokumentacji |
__.map(function(doc) { return { id: doc.id, msg: doc.message, akcje:dok.akcje }; }); |
Projektuje identyfikator, wiadomość (oznaczoną jako msg) i akcję ze wszystkich dokumentów. |
| WYBIERZ* 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". |
| WYBIERZ* Z dokumentacji WHERE ARRAY_CONTAINS(docs.Tags, 123) |
__.filter(function(x) { return x.Tags && x.Tags.indexOf(123) > -1; }); |
Zapytania dotyczą dokumentów, które mają właściwość Tags, a Tags to tablica zawierająca wartość 123. |
| SELECT docs.id, (Translation remains the same as context for adjustment is not specified) 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 DOŁĄCZ tag W dokumentach.Tags 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 systemowej właściwości sygnatury czasowej _ts, a następnie projektuje i spłaszcza tablicę Tagi. |
Dalsze 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 dla Azure Cosmos DB
- JavaScript ES6 (ECMA 2015)