Java Script-fråge-API i Azure Cosmos DBJavaScript query API in Azure Cosmos DB

GÄLLER för: SQL API

Förutom att skicka frågor med hjälp av SQL-API: et i Cosmos DB Azure Cosmos DB tillhandahåller SDK: n på Server sidan ett JavaScript-gränssnitt för att utföra optimerade frågor i Cosmos DB lagrade procedurer och utlösare.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. Du behöver inte vara medveten om SQL-språket för att kunna använda det här JavaScript-gränssnittet.You don't have to be aware of the SQL language to use this JavaScript interface. Med Java Script-API: et kan du skapa frågor genom programmering genom att skicka predikat till sekvenser med funktions anrop, med en syntax som är välbekant för ECMAScript5's-matriser och populära JavaScript-bibliotek som 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. Frågor parsas av JavaScript-körningen och körs effektivt med Azure Cosmos DB index.Queries are parsed by the JavaScript runtime and efficiently executed using Azure Cosmos DB indices.

JavaScript-funktioner som stödsSupported JavaScript functions

FunktionFunction BeskrivningDescription
chain() ... .value([callback] [, options]) Startar ett länkat samtal som måste avslutas med Value ().Starts a chained call that must be terminated with value().
filter(predicateFunction [, options] [, callback]) Filtrerar inmatade objekt med en predikat-funktion som returnerar true/false för att filtrera in/ut indatafiler i den resulterande uppsättningen.Filters the input using a predicate function that returns true/false in order to filter in/out input documents into the resulting set. Den här funktionen fungerar ungefär som en WHERE-sats i SQL.This function behaves similar to a WHERE clause in SQL.
flatten([isShallow] [, options] [, callback]) Kombinerar och fören klar matriser från varje inobjekt till en enda matris.Combines and flattens arrays from each input item into a single array. Den här funktionen fungerar ungefär som SelectMany i LINQ.This function behaves similar to SelectMany in LINQ.
map(transformationFunction [, options] [, callback]) Använder en projektion med en Transformations funktion som mappar varje inobjekt till ett JavaScript-objekt eller-värde.Applies a projection given a transformation function that maps each input item to a JavaScript object or value. Den här funktionen fungerar ungefär som en SELECT-sats i SQL.This function behaves similar to a SELECT clause in SQL.
pluck([propertyName] [, options] [, callback]) Den här funktionen är en genväg till en karta som extraherar värdet för en enskild egenskap från varje inobjekt.This function is a shortcut for a map that extracts the value of a single property from each input item.
sortBy([predicate] [, options] [, callback]) Skapar en ny uppsättning dokument genom att sortera dokumenten i indata-dataströmmen i stigande ordning genom att använda det angivna predikatet.Produces a new set of documents by sorting the documents in the input document stream in ascending order by using the given predicate. Den här funktionen fungerar likadant som en ORDER BY-sats i SQL.This function behaves similar to an ORDER BY clause in SQL.
sortByDescending([predicate] [, options] [, callback]) Skapar en ny uppsättning dokument genom att sortera dokumenten i indata-dataströmmen i fallande ordning med det angivna predikatet.Produces a new set of documents by sorting the documents in the input document stream in descending order using the given predicate. Den här funktionen fungerar ungefär som en ORDER BY x DESC-sats i SQL.This function behaves similar to an ORDER BY x DESC clause in SQL.
unwind(collectionSelector, [resultSelector], [options], [callback]) Utför en själv koppling med en inre matris och lägger till resultat från båda sidor som tupler till resultat projektionen.Performs a self-join with inner array and adds results from both sides as tuples to the result projection. Till exempel kan du ansluta till ett person dokument med person. hus djur skulle producera [person, PET]-tupler.For instance, joining a person document with person.pets would produce [person, pet] tuples. Detta liknar SelectMany i .NET-länken.This is similar to SelectMany in .NET LINK.

När de ingår i predikat och/eller Selector-funktioner, optimeras följande JavaScript-skript automatiskt för att köras direkt på Azure Cosmos DB index:When included inside predicate and/or selector functions, the following JavaScript constructs get automatically optimized to run directly on Azure Cosmos DB indices:

  • Enkla operatorer = + - * / : % | ^ & == != === !=== < > <= >= || && << >> >>>!``~Simple operators: = + - * / % | ^ & == != === !=== < > <= >= || && << >> >>>! ~
  • Litteraler, inklusive objektets litteraler: {}Literals, including the object literal: {}
  • var, returvar, return

Följande JavaScript-konstruktioner blir inte optimerade för Azure Cosmos DB index:The following JavaScript constructs do not get optimized for Azure Cosmos DB indices:

  • Kontroll flöde (till exempel, om, till exempel)Control flow (for example, if, for, while)
  • Funktions anropFunction calls

Mer information finns på sidan om Cosmos DB på Server sidans JavaScript-dokumentation.For more information, see the Cosmos DB Server Side JavaScript Documentation.

SQL till JavaScript lathund-bladSQL to JavaScript cheat sheet

I följande tabell presenteras olika SQL-frågor och motsvarande JavaScript-frågor.The following table presents various SQL queries and the corresponding JavaScript queries. Som med SQL-frågor är egenskaper (till exempel item.id) Skift läges känsliga.As with SQL queries, properties (for example, item.id) are case-sensitive.

Anteckning

__ (dubbelunderstreck) är ett alias till getContext().getCollection() när du använder frågan JavaScript API.__ (double-underscore) is an alias to getContext().getCollection() when using the JavaScript query API.

SQLSQL Java Script-fråge-APIJavaScript Query API BeskrivningDescription
SelectSELECT *
FRÅN dokumentFROM docs
_ _. map (funktion (doc) {__.map(function(doc) {
    returnera dokument;    return doc;
});});
Resulterar i alla dokument (med fortsättnings-token) som är.Results in all documents (paginated with continuation token) as is.
VÄLJSELECT
   docs.id,   docs.id,
   dok. Message som MSG,   docs.message AS msg,
   dokument. åtgärder   docs.actions
FRÅN dokumentFROM docs
_ _. map (funktion (doc) {__.map(function(doc) {
    returrelaterade    return {
        ID: doc.id,        id: doc.id,
        Msg: doc. Message,        msg: doc.message,
        åtgärder: doc. Actions        actions:doc.actions
    };    };
});});
Projekterar ID, meddelande (alias till MSG) och åtgärd från alla dokument.Projects the id, message (aliased to msg), and action from all documents.
SelectSELECT *
FRÅN dokumentFROM docs
WHEREWHERE
   dok. ID = "X998_Y998"   docs.id="X998_Y998"
_ _ filter (Function (doc) {__.filter(function(doc) {
    returnera doc.id = = = "X998_Y998";    return doc.id ==="X998_Y998";
});});
Frågor för dokument med predikatet: ID = "X998_Y998".Queries for documents with the predicate: id = "X998_Y998".
SelectSELECT *
FRÅN dokumentFROM docs
WHEREWHERE
   ARRAY_CONTAINS (dokument. Taggar, 123)   ARRAY_CONTAINS(docs.Tags, 123)
_ _. filter (Function (x) {__.filter(function(x) {
    returnera x. Taggar && x. Tags. indexOf (123) >-1;    return x.Tags && x.Tags.indexOf(123) > -1;
});});
Frågor för dokument med egenskapen Taggar och taggar är en matris som innehåller värdet 123.Queries for documents that have a Tags property and Tags is an array containing the value 123.
VÄLJSELECT
   docs.id,   docs.id,
   dok. Message som MSG   docs.message AS msg
FRÅN dokumentFROM docs
WHEREWHERE
   dok. ID = "X998_Y998"   docs.id="X998_Y998"
_ _. Chain ()__.chain()
    . filter (Function (doc) {    .filter(function(doc) {
        returnera doc.id = = = "X998_Y998";        return doc.id ==="X998_Y998";
    })    })
    . map (funktion (doc) {    .map(function(doc) {
       returrelaterade       return {
            ID: doc.id,            id: doc.id,
            Msg: doc. Message            msg: doc.message
       };       };
    })    })
. Value ();.value();
Frågor om dokument med ett predikat, ID = "X998_Y998" och projekterar sedan ID och meddelande (alias till MSG).Queries for documents with a predicate, id = "X998_Y998", and then projects the id and message (aliased to msg).
Välj värde taggSELECT VALUE tag
FRÅN dokumentFROM docs
KOPPLA tagg i dokument. TaggenJOIN tag IN docs.Tags
Sortera efter docs._tsORDER BY docs._ts
_ _. Chain ()__.chain()
    . filter (Function (doc) {    .filter(function(doc) {
        returnera dokument. Taggar && array. isArray (doc. Taggar);        return doc.Tags && Array.isArray(doc.Tags);
    })    })
    . sortBy (Function (doc) {    .sortBy(function(doc) {
        returnera doc._ts;        return doc._ts;
    })    })
    . plocka ("Taggar")    .pluck("Tags")
    . förenkla ()    .flatten()
    . Value ()    .value()
Filter för dokument som har en mat ris egenskap, taggar och sorterar de resulterande dokumenten med system egenskapen _ts timestamp, och sedan lägger Project + samman taggarna array.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.

Nästa stegNext steps

Lär dig mer om begrepp och hur du skriver och använder lagrade procedurer, utlösare och användardefinierade funktioner i Azure Cosmos DB:Learn more concepts and how-to write and use stored procedures, triggers, and user-defined functions in Azure Cosmos DB: