Interfejs API zapytań JavaScript w Azure Cosmos DBJavaScript query API in Azure Cosmos DB

Oprócz wydawania zapytań przy użyciu interfejsu API SQL w Azure Cosmos DB, zestaw SDK po stronie serwera Cosmos DB udostępnia interfejs JavaScript do wykonywania zoptymalizowanych zapytań w Cosmos DB procedurach składowanych i wyzwalaczach.In addition to issuing queries using the SQL API in Azure Cosmos DB, the Cosmos DB server-side SDK provides a JavaScript interface for performing optimized queries in Cosmos DB Stored Procedures and Triggers. Nie trzeba znać języka SQL, aby używać tego interfejsu JavaScript.You don't have to be aware of the SQL language to use this JavaScript interface. Interfejs API zapytań języka JavaScript umożliwia Programistyczne tworzenie zapytań przez przekazywanie funkcji predykatów do sekwencji wywołań funkcji, z składnią ECMAScript5's wbudowane i popularne biblioteki języka JavaScript, takie jak Lodash.The JavaScript query API allows you to programmatically build queries by passing predicate functions into sequence of function calls, with a syntax familiar to ECMAScript5's array built-ins and popular JavaScript libraries like Lodash. Zapytania są analizowane przez środowisko uruchomieniowe JavaScript i efektywnie wykonywane przy użyciu Azure Cosmos DB indeksów.Queries are parsed by the JavaScript runtime and efficiently executed using Azure Cosmos DB indices.

Obsługiwane funkcje języka JavaScriptSupported JavaScript functions

FunkcjaFunction OpisDescription
chain() ... .value([callback] [, options]) Uruchamia wywołanie łańcuchowe, które musi zostać zakończone wartością ().Starts a chained call that must be terminated with value().
filter(predicateFunction [, options] [, callback]) Filtruje dane wejściowe przy użyciu funkcji predykatu zwracającej wartość true/false w celu przefiltrowania/wyewidencjonowania dokumentów wejściowych do wynikowego zestawu.Filters the input using a predicate function that returns true/false in order to filter in/out input documents into the resulting set. Ta funkcja zachowuje się podobnie do klauzuli WHERE w SQL.This function behaves similar to a WHERE clause in SQL.
flatten([isShallow] [, options] [, callback]) Łączy i spłaszcza tablice z każdego elementu wejściowego w jedną tablicę.Combines and flattens arrays from each input item into a single array. Ta funkcja zachowuje się podobnie do SelectMany w LINQ.This function behaves similar to SelectMany in LINQ.
map(transformationFunction [, options] [, callback]) Stosuje projekcję przy użyciu funkcji transformacji, która mapuje każdy element wejściowy do obiektu lub wartości JavaScript.Applies a projection given a transformation function that maps each input item to a JavaScript object or value. Ta funkcja zachowuje się podobnie do klauzuli SELECT w SQL.This function behaves similar to a SELECT clause in SQL.
pluck([propertyName] [, options] [, callback]) Ta funkcja jest skrótem dla mapy, która wyodrębnia wartość pojedynczej właściwości z każdego elementu wejściowego.This function is a shortcut for a map that extracts the value of a single property from each input item.
sortBy([predicate] [, options] [, callback]) Tworzy nowy zestaw dokumentów, sortując dokumenty w strumieniu dokumentu wejściowego w kolejności rosnącej przy użyciu danego predykatu.Produces a new set of documents by sorting the documents in the input document stream in ascending order by using the given predicate. Ta funkcja zachowuje się podobnie do klauzuli ORDER BY w SQL.This function behaves similar to an ORDER BY clause in SQL.
sortByDescending([predicate] [, options] [, callback]) Tworzy nowy zestaw dokumentów, sortując dokumenty w strumieniu dokumentu wejściowego w kolejności malejącej przy użyciu podanego predykatu.Produces a new set of documents by sorting the documents in the input document stream in descending order using the given predicate. Ta funkcja zachowuje się podobnie do klauzuli ORDER BY x DESC w SQL.This function behaves similar to an ORDER BY x DESC clause in SQL.
unwind(collectionSelector, [resultSelector], [options], [callback]) Wykonuje samosprzężenie z tablicą wewnętrzną i dodaje wyniki z obu stron jako krotki do rzutowania wyników.Performs a self-join with inner array and adds results from both sides as tuples to the result projection. Na przykład przyłączenie do dokumentu osoby. zwierzęta domowe spowodują utworzenie krotek [Person, PET].For instance, joining a person document with person.pets would produce [person, pet] tuples. Jest to podobne do SelectMany w ŁĄCZu .NET.This is similar to SelectMany in .NET LINK.

Po dołączeniu wewnątrz funkcji predykatu i/lub selektora następujące konstrukcje JavaScript są automatycznie zoptymalizowane pod kątem uruchamiania bezpośrednio na Azure Cosmos DB indeksy:When included inside predicate and/or selector functions, the following JavaScript constructs get automatically optimized to run directly on Azure Cosmos DB indices:

  • Operatory proste = + - * : / % | ^ & == != === !=== < > <= >= || && << >> >>>!``~Simple operators: = + - * / % | ^ & == != === !=== < > <= >= || && << >> >>>! ~
  • Literały, w tym literał obiektu:{}Literals, including the object literal: {}
  • var, Returnvar, return

Następujące konstrukcje JavaScript nie są zoptymalizowane pod kątem Azure Cosmos DB indeksów:The following JavaScript constructs do not get optimized for Azure Cosmos DB indices:

  • Przepływ sterowania (na przykład jeśli, w przypadku, while)Control flow (for example, if, for, while)
  • Wywołania funkcjiFunction calls

Aby uzyskać więcej informacji, zobacz dokumentację języka JavaScript po stronie serwera Cosmos DB.For more information, see the Cosmos DB Server Side JavaScript Documentation.

Arkusz Ściągawka SQL do JavaScriptSQL to JavaScript cheat sheet

W poniższej tabeli przedstawiono różne zapytania SQL i odpowiednie zapytania języka JavaScript.The following table presents various SQL queries and the corresponding JavaScript queries. Podobnie jak w przypadku zapytań SQL, właściwości (na przykład item.id) uwzględniają wielkość liter.As with SQL queries, properties (for example, item.id) are case-sensitive.

Uwaga

__ (podwójne podkreślenie) jest aliasem funkcji getContext().getCollection() podczas korzystania z interfejsu API zapytań języka JavaScript.__ (double-underscore) is an alias to getContext().getCollection() when using the JavaScript query API.

SQLSQL Interfejs API zapytań JavaScriptJavaScript Query API OpisDescription
ZAZNACZENIASELECT *
Z witryny docsFROM docs
. map (funkcja (doc) {.map(function(doc) {
    Zwróć dokument;    return doc;
});});
Wyniki we wszystkich dokumentach (z podziałem na strony z tokenem kontynuacji) zgodnie z oczekiwaniami.Results in all documents (paginated with continuation token) as is.
SELECTSELECT
   docs.id,   docs.id,
   docs. Message jako MSG,   docs.message AS msg,
   docs. Actions   docs.actions
Z witryny docsFROM docs
. map (funkcja (doc) {.map(function(doc) {
    przesłać    return {
        ID: doc.id,        id: doc.id,
        msg: doc. Message,        msg: doc.message,
        akcje: doc. Actions        actions:doc.actions
    };    };
});});
Projektuje identyfikator, komunikat (alias do MSG) i akcję z wszystkich dokumentów.Projects the id, message (aliased to msg), and action from all documents.
ZAZNACZENIASELECT *
Z witryny docsFROM docs
WHEREWHERE
   docs. ID = "X998_Y998"   docs.id="X998_Y998"
. Filter (funkcja (doc) {.filter(function(doc) {
    Return doc.id = = = "X998_Y998";    return doc.id ==="X998_Y998";
});});
Zapytania o dokumenty z predykatem: ID = "X998_Y998".Queries for documents with the predicate: id = "X998_Y998".
ZAZNACZENIASELECT *
Z witryny docsFROM docs
WHEREWHERE
   ARRAY_CONTAINS (docs. Tagi, 123)   ARRAY_CONTAINS(docs.Tags, 123)
. Filter (funkcja (x) {.filter(function(x) {
    zwraca x. Tags && x. Tags. indexOf (123) >-1;    return x.Tags && x.Tags.indexOf(123) > -1;
});});
Zapytania o dokumenty, które mają właściwość tagów i Tagi, są tablicą zawierającą wartość 123.Queries for documents that have a Tags property and Tags is an array containing the value 123.
SELECTSELECT
   docs.id,   docs.id,
   docs. Message jako komunikat   docs.message AS msg
Z witryny docsFROM docs
WHEREWHERE
   docs. ID = "X998_Y998"   docs.id="X998_Y998"
. łańcuch ().chain()
    . Filter (funkcja (doc) {    .filter(function(doc) {
        Return doc.id = = = "X998_Y998";        return doc.id ==="X998_Y998";
    })    })
    . map (funkcja (doc) {    .map(function(doc) {
       przesłać       return {
            ID: doc.id,            id: doc.id,
            msg: doc. Message            msg: doc.message
       };       };
    })    })
. Value ();.value();
Wykonuje zapytania o dokumenty z predykatem, identyfikatorem "X998_Y998", a następnie projektuje identyfikator i komunikat (alias do MSG).Queries for documents with a predicate, id = "X998_Y998", and then projects the id and message (aliased to msg).
Wybierz tag wartościSELECT VALUE tag
Z witryny docsFROM docs
Tag JOIN w witrynie docs. TabliczkJOIN tag IN docs.Tags
ORDER BY docs. _tsORDER BY docs._ts
. łańcuch ().chain()
    . Filter (funkcja (doc) {    .filter(function(doc) {
        Wróć do dokumentu. Tagi && Array. IsArray (doc. Tagi);        return doc.Tags && Array.isArray(doc.Tags);
    })    })
    . SortBy — (funkcja (doc) {    .sortBy(function(doc) {
        Zwróć dokument doc. _ts;        return doc._ts;
    })    })
    . oskubane ("Tagi")    .pluck("Tags")
    . Spłaszcz ()    .flatten()
    . Value ()    .value()
Filtruje dokumenty, które mają właściwość Array, Tagi i sortuje dokumenty uzyskane według właściwości systemowej sygnatury czasowej _ts, a następnie projekty i spłaszczają tablicę tagów.Filters for documents that have an array property, Tags, and sorts the resulting documents by the _ts timestamp system property, and then projects + flattens the Tags array.

Następne krokiNext steps

Dowiedz się więcej o pojęciach i sposobie pisania i używania procedur składowanych, wyzwalaczy i funkcji zdefiniowanych przez użytkownika w programie Azure Cosmos DB:Learn more concepts and how-to write and use stored procedures, triggers, and user-defined functions in Azure Cosmos DB: