Java script-query-API in Azure Cosmos DBJavaScript query API in Azure Cosmos DB

Naast het uitgeven van query's met behulp van de SQL-API in Azure Cosmos DB, biedt de Cosmos DB SDK aan de server zijde een Java script-interface voor het uitvoeren van geoptimaliseerde query's in Cosmos DB opgeslagen procedures en triggers.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. U hoeft niet op de hoogte te zijn van de SQL-taal om deze Java script-interface te gebruiken.You don't have to be aware of the SQL language to use this JavaScript interface. Met de Java script-query-API kunt u programmatisch query's maken door predikaten te gebruiken in volg orde van functie aanroepen, met een syntaxis die bekend is met de ECMAScript5's array-ingebouwde en populaire Java script-bibliotheken zoals 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. Query's worden door de Java Script-runtime geparseerd en efficiënt uitgevoerd met Azure Cosmos DB indices.Queries are parsed by the JavaScript runtime and efficiently executed using Azure Cosmos DB indices.

Ondersteunde Java script-functiesSupported JavaScript functions

FunctieFunction BeschrijvingDescription
chain() ... .value([callback] [, options]) Start een geketende aanroep die moet worden beëindigd met de waarde ().Starts a chained call that must be terminated with value().
filter(predicateFunction [, options] [, callback]) Hiermee wordt de invoer gefilterd met behulp van een predicaat functie die waar/onwaar retourneert om invoer documenten te filteren in/uit te voeren in de resulterende set.Filters the input using a predicate function that returns true/false in order to filter in/out input documents into the resulting set. Deze functie gedraagt zich op dezelfde manier als een WHERE-component in SQL.This function behaves similar to a WHERE clause in SQL.
flatten([isShallow] [, options] [, callback]) Hiermee worden matrices van elk invoer item gecombineerd en afgevlakt tot één matrix.Combines and flattens arrays from each input item into a single array. Deze functie gedraagt zich op dezelfde manier als SelectMany in LINQ.This function behaves similar to SelectMany in LINQ.
map(transformationFunction [, options] [, callback]) Past een projectie toe op basis van een transformatie functie waarmee elk invoer item wordt toegewezen aan een Java Script-object of-waarde.Applies a projection given a transformation function that maps each input item to a JavaScript object or value. Deze functie gedraagt zich op dezelfde manier als een SELECT-component in SQL.This function behaves similar to a SELECT clause in SQL.
pluck([propertyName] [, options] [, callback]) Deze functie is een snelkoppeling voor een kaart die de waarde van één eigenschap uit elk invoer item ophaalt.This function is a shortcut for a map that extracts the value of a single property from each input item.
sortBy([predicate] [, options] [, callback]) Produceert een nieuwe set documenten door de documenten in de invoer document stroom in oplopende volg orde te sorteren met behulp van het opgegeven predicaat.Produces a new set of documents by sorting the documents in the input document stream in ascending order by using the given predicate. Deze functie gedraagt zich op dezelfde manier als een ORDER BY-component in SQL.This function behaves similar to an ORDER BY clause in SQL.
sortByDescending([predicate] [, options] [, callback]) Produceert een nieuwe set documenten door de documenten in de invoer document stroom in aflopende volg orde te sorteren met het opgegeven predicaat.Produces a new set of documents by sorting the documents in the input document stream in descending order using the given predicate. Deze functie gedraagt zich op dezelfde manier als een component ORDER BY x in SQL.This function behaves similar to an ORDER BY x DESC clause in SQL.
unwind(collectionSelector, [resultSelector], [options], [callback]) Voert een self-join uit met de binnenste matrix en voegt resultaten van beide zijden toe als Tuples voor de projectie van het resultaat.Performs a self-join with inner array and adds results from both sides as tuples to the result projection. U kunt bijvoorbeeld een persoons document samen voegen met persoon. huis dieren zouden Tuples van [person, huisdier] opleveren.For instance, joining a person document with person.pets would produce [person, pet] tuples. Dit is vergelijkbaar met SelectMany in .NET LINK.This is similar to SelectMany in .NET LINK.

Wanneer ze zijn opgenomen in predikaten en/of selector-functies, worden de volgende Java script-constructies automatisch geoptimaliseerd om rechtstreeks op Azure Cosmos DB indices te worden uitgevoerd:When included inside predicate and/or selector functions, the following JavaScript constructs get automatically optimized to run directly on Azure Cosmos DB indices:

  • Eenvoudige Opera tors = + - * / : % | ^ & == != === !=== < > <= >= || && << >> >>>!``~Simple operators: = + - * / % | ^ & == != === !=== < > <= >= || && << >> >>>! ~
  • Letterlijke waarden, inclusief de object letterlijke waarde:{}Literals, including the object literal: {}
  • var, retourvar, return

De volgende Java script-constructies worden niet geoptimaliseerd voor Azure Cosmos DB indices:The following JavaScript constructs do not get optimized for Azure Cosmos DB indices:

  • Controle stroom (bijvoorbeeld als, voor, while)Control flow (for example, if, for, while)
  • Functie aanroepenFunction calls

Zie de Cosmos DB server side java script-documentatievoor meer informatie.For more information, see the Cosmos DB Server Side JavaScript Documentation.

Cheat-blad van SQL naar Java scriptSQL to JavaScript cheat sheet

De volgende tabel bevat verschillende SQL-query's en de bijbehorende java script-query's.The following table presents various SQL queries and the corresponding JavaScript queries. Net als bij SQL-query's zijn eigenschappen (bijvoorbeeld item.id) hoofdletter gevoelig.As with SQL queries, properties (for example, item.id) are case-sensitive.

Notitie

__ (dubbele onderstreping) is een alias naar getContext().getCollection() bij gebruik van de JavaScript-query-API.__ (double-underscore) is an alias to getContext().getCollection() when using the JavaScript query API.

SQLSQL Java script-query-APIJavaScript Query API BeschrijvingDescription
UITGESCHAKELDSELECT *
VAN documentenFROM docs
. map (function (doc) {.map(function(doc) {
    retour document;    return doc;
});});
De resultaten zijn in alle documenten (gepagineerd met vervolg token).Results in all documents (paginated with continuation token) as is.
SELECTSELECT
   docs.id,   docs.id,
   docs. bericht als msg,   docs.message AS msg,
   docs. acties   docs.actions
VAN documentenFROM docs
. map (function (doc) {.map(function(doc) {
    opvragen    return {
        id: doc.id,        id: doc.id,
        bericht: doc. bericht,        msg: doc.message,
        acties: doc. acties        actions:doc.actions
    };    };
});});
Projecteert de id, het bericht (met een alias als een bericht) en actie van alle documenten.Projects the id, message (aliased to msg), and action from all documents.
UITGESCHAKELDSELECT *
VAN documentenFROM docs
WHEREWHERE
   docs. id = "X998_Y998"   docs.id="X998_Y998"
. filter (functie (doc) {.filter(function(doc) {
    retour doc.id = = = "X998_Y998";    return doc.id ==="X998_Y998";
});});
Query's voor documenten met het predicaat: ID = "X998_Y998".Queries for documents with the predicate: id = "X998_Y998".
UITGESCHAKELDSELECT *
VAN documentenFROM docs
WHEREWHERE
   ARRAY_CONTAINS (docs. Tags, 123)   ARRAY_CONTAINS(docs.Tags, 123)
. filter (functie (x) {.filter(function(x) {
    x. Tags retour neren && x. Tags. indexOf (123) >-1;    return x.Tags && x.Tags.indexOf(123) > -1;
});});
Query's voor documenten met de eigenschap Tags en tags zijn een matrix met de waarde 123.Queries for documents that have a Tags property and Tags is an array containing the value 123.
SELECTSELECT
   docs.id,   docs.id,
   docs. bericht als msg   docs.message AS msg
VAN documentenFROM docs
WHEREWHERE
   docs. id = "X998_Y998"   docs.id="X998_Y998"
. Chain ().chain()
    . filter (functie (doc) {    .filter(function(doc) {
        retour doc.id = = = "X998_Y998";        return doc.id ==="X998_Y998";
    })    })
    . map (functie (doc) {    .map(function(doc) {
       opvragen       return {
            id: doc.id,            id: doc.id,
            bericht: document            msg: doc.message
       };       };
    })    })
. Value ();.value();
Query's voor documenten met een predikaat, ID = "X998_Y998" en vervolgens projecteert u de id en het bericht (als alias voor msg).Queries for documents with a predicate, id = "X998_Y998", and then projects the id and message (aliased to msg).
WAARDEcode selecterenSELECT VALUE tag
VAN documentenFROM docs
Voeg tag toe IN docs. KoptagsJOIN tag IN docs.Tags
ORDER BY docs. _tsORDER BY docs._ts
. Chain ().chain()
    . filter (functie (doc) {    .filter(function(doc) {
        retour document. Tags && matrix. isArray (doc. Tags);        return doc.Tags && Array.isArray(doc.Tags);
    })    })
    . sortBy (functie (doc) {    .sortBy(function(doc) {
        retour document. _ts;        return doc._ts;
    })    })
    . Pluck ("Tags")    .pluck("Tags")
    . afvlakking ()    .flatten()
    . Value ()    .value()
Filters voor documenten met een matrix eigenschap, tags en sorteren de resulterende documenten door de _ts tijds tempel systeem eigenschap. vervolgens worden projecten en de labels matrix afgevlakt.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.

Volgende stappenNext steps

Meer informatie over het schrijven en gebruiken van opgeslagen procedures, triggers en door de gebruiker gedefinieerde functies in Azure Cosmos DB:Learn more concepts and how-to write and use stored procedures, triggers, and user-defined functions in Azure Cosmos DB: