Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: NoSQL
Förutom att utfärda frågor med hjälp av API:et för NoSQL i Azure Cosmos DB tillhandahåller Azure Cosmos DB SDK på serversidan ett JavaScript-gränssnitt för att utföra optimerade frågor i Lagrade procedurer och utlösare i Azure Cosmos DB. Du behöver inte känna till SQL-språket för att använda det här JavaScript-gränssnittet. Med JavaScript-fråge-API:et kan du programmatiskt skapa frågor genom att skicka predikatfunktioner till sekvens av funktionsanrop, med en syntax som liknar ECMAScript5-matrisens inbyggda matriser och populära JavaScript-bibliotek som Lodash. Frågor parsas av JavaScript-körningen och körs effektivt med hjälp av Azure Cosmos DB-index.
JavaScript-funktioner som stöds
| Funktion | Beskrivning |
|---|---|
chain() ... .value([callback] [, options]) |
Startar ett kedjat anrop som måste avslutas med value(). |
filter(predicateFunction [, options] [, callback]) |
Filtrerar indata med hjälp av en predikatfunktion som returnerar sant/falskt för att filtrera in-/utdatadokument i den resulterande uppsättningen. Den här funktionen fungerar ungefär som en WHERE-sats i SQL. |
flatten([isShallow] [, options] [, callback]) |
Kombinerar och jämnar ut matriser från varje indataobjekt till en enda matris. Den här funktionen fungerar ungefär som SelectMany i LINQ. |
map(transformationFunction [, options] [, callback]) |
Tillämpar en projektion givet en transformeringsfunktion som mappar varje indataobjekt till ett JavaScript-objekt eller -värde. Den här funktionen fungerar ungefär som en SELECT-sats i SQL. |
pluck([propertyName] [, options] [, callback]) |
Den här funktionen är en genväg för en karta som extraherar värdet för en enskild egenskap från varje indataobjekt. |
sortBy([predicate] [, options] [, callback]) |
Skapar en ny uppsättning dokument genom att sortera dokumenten i indatadokumentströmmen i stigande ordning med hjälp av det angivna predikatet. Den här funktionen fungerar ungefär som en ORDER BY-sats i SQL. |
sortByDescending([predicate] [, options] [, callback]) |
Skapar en ny uppsättning dokument genom att sortera dokumenten i indatadokumentströmmen i fallande ordning med hjälp av det angivna predikatet. Den här funktionen fungerar ungefär som en ORDER BY x DESC-sats i SQL. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Utför en självkoppling med inre fält och lägger till resultat från båda sidor som tupel i resultatprojektionen. Till exempel skulle anslutning av ett persondokument med person.pets producera [person, husdjur] tupplar. Detta liknar SelectMany i .NET LINQ. |
När de ingår i predikat- och/eller väljarefunktioner optimeras följande JavaScript-konstruktioner automatiskt för att köras direkt på Azure Cosmos DB-index:
- Enkla operatorer:
=+-*/%|^&==!====!==<><=>=||&&<<>>>>>~ - Literaler, inklusive objektliteralen:
{} - var, return
Följande JavaScript-konstruktioner optimeras inte för Azure Cosmos DB-index:
- Kontrollflöde:
ifforwhile - Funktionsanrop
Mer information finns i JavaScript-dokumentationen för Azure Cosmos DB Server Side.
Fusklapp för SQL till JavaScript
I följande tabell visas olika SQL-frågor och motsvarande JavaScript-frågor. Precis som med SQL-frågor är egenskaper (till exempel item.id) skiftlägeskänsliga.
Kommentar
__ (dubbelunderstreck) är ett alias till getContext().getCollection() när du använder JavaScript-fråge-API:t.
| SQL | JavaScript-fråge-API | Beskrivning |
|---|---|---|
| UTVALD* FROM-dokumentation |
__.map(function(doc) { return doc; }); |
Resultat i alla dokument (uppdelade på sidor med fortsättningsmarkör) så som de är. |
| VÄLJ docs.id, docs.message AS msg, docs.actions FROM-dokumentation |
__.map(function(doc) { return { id: doc.id, msg: doc.message, åtgärder:dokument.åtgärder }; }); |
Projicerar id, meddelande med aliaset msg, och åtgärd från alla dokument. |
| UTVALD* FROM-dokumentation VAR docs.id="X998_Y998" |
__.filter(function(doc) { return doc.id ==="X998_Y998"; }); |
Frågor om dokument med predikatet: id = "X998_Y998". |
| UTVALD* FROM-dokumentation VAR ARRAY_CONTAINS(docs.Taggar, 123) |
__.filter(function(x) { return x.Tags && x.Tags.indexOf(123) > -1; }); |
Sökningar efter dokument med egenskapen Taggar där Taggar är en matriser som innehåller värdet 123. |
| Välj docs.id, docs.message AS msg FROM-dokumentation VAR docs.id="X998_Y998" |
__.chain() .filter(function(doc) { return doc.id ==="X998_Y998"; }) .map(function(doc) { return { id: doc.id, msg: doc.message }; }) .value(); |
Frågor om dokument med predikat, id = "X998_Y998" och projekterar sedan ID och meddelande (alias till msg). |
| VÄLJ VÄRDE-tagg FROM-dokumentation SAMMANSLUT tag IN docs.Taggar ORDER BY docs._ts |
__.chain() .filter(function(doc) { returnera doc.Tags && Array.isArray(doc.Tags); }) .sortBy(function(doc) { return doc._ts; }) .pluck("Tags") .flatten() .value() |
Filtrerar dokument som har en matrisegenskap, Taggar, och sorterar de resulterande dokumenten efter _ts-tidsstämpelsystemegenskapen, och projekterar och plattar sedan ut matrisen Taggar. |
Nästa steg
Lär dig mer om begrepp och instruktioner för att skriva och använda lagrade procedurer, utlösare och användardefinierade funktioner i Azure Cosmos DB:
- Så här skriver du lagrade procedurer och utlösare med JavaScript Query API
- Arbeta med azure Cosmos DB-lagrade procedurer, utlösare och användardefinierade funktioner
- Använda lagrade procedurer, utlösare, användardefinierade funktioner i Azure Cosmos DB
- Api-referens för Azure Cosmos DB JavaScript på serversidan
- JavaScript ES6 (ECMA 2015)