Rozhraní API pro dotazy v JavaScriptu ve službě Azure Cosmos DB

PLATÍ PRO: ROZHRANÍ SQL API

Kromě vydávání dotazů pomocí rozhraní SQL API v Azure Cosmos DB poskytuje sada SDK na straně serveru Cosmos DB rozhraní JavaScript pro provádění optimalizovaných dotazů v Cosmos DB uložených procedurách a triggerech. Pro použití tohoto rozhraní JavaScript nemusíte znát jazyk SQL. Rozhraní API pro dotazování v jazyce JavaScript umožňuje programově vytvářet dotazy tím, že předává funkce predikátů do sekvence volání funkce, se syntaxí ECMAScript5's předdefinované a oblíbené knihovny JavaScriptu, jako je Lodash. Dotazy jsou analyzovány modulem runtime jazyka JavaScript a efektivně spouštěny pomocí Azure Cosmos DB indexy.

Podporované funkce JavaScriptu

Funkce Popis
chain() ... .value([callback] [, options]) Spustí zřetězené volání, které musí být ukončeno hodnotou ().
filter(predicateFunction [, options] [, callback]) Filtruje vstup pomocí funkce predikátu, která vrací hodnotu true nebo false, aby bylo možné filtrovat vstupní a výstupní dokumenty do výsledné sady. Tato funkce se chová podobně jako klauzule WHERE v SQL.
flatten([isShallow] [, options] [, callback]) Kombinuje a sloučí pole z každé vstupní položky do jednoho pole. Tato funkce se chová podobně jako operátor SelectMany v LINQ.
map(transformationFunction [, options] [, callback]) Aplikuje projekci na danou funkci transformace, která mapuje každou vstupní položku na objekt nebo hodnotu JavaScriptu. Tato funkce se chová podobně jako klauzule SELECT v SQL.
pluck([propertyName] [, options] [, callback]) Tato funkce je zástupce pro mapu, která extrahuje hodnotu jedné vlastnosti z každé vstupní položky.
sortBy([predicate] [, options] [, callback]) Vytvoří novou sadu dokumentů seřazením dokumentů ve vstupním streamu dokumentů ve vzestupném pořadí pomocí daného predikátu. Tato funkce se chová podobně jako klauzule ORDER BY v SQL.
sortByDescending([predicate] [, options] [, callback]) Vytvoří novou sadu dokumentů seřazením dokumentů v datovém proudu vstupního dokumentu v sestupném pořadí pomocí daného predikátu. Tato funkce se chová podobně jako klauzule ORDER BY x DESC v jazyce SQL.
unwind(collectionSelector, [resultSelector], [options], [callback]) Provede samoobslužné spojení s vnitřním polem a přidá výsledky z obou stran jako řazené kolekce členů do výsledné projekce. Například připojení k dokumentu osoby pomocí Person. Pet vytvoří řazené kolekce členů [person, PET]. To se podobá operátor SelectMany v odkazu .NET.

Při zahrnutí do predikátu a/nebo funkce selektoru jsou následující konstrukce JavaScriptu automaticky optimalizované pro spuštění přímo na Azure Cosmos DB indexy:

  • Jednoduché operátory = + - * : / % | ^ & == != === !=== < > <= >= || && << >> >>>!``~
  • Literály, včetně literálu objektu: {}
  • var, Return

Následující konstrukce jazyka JavaScript nejsou optimalizované pro Azure Cosmos DB indexy:

  • Tok řízení (například if, for, while)
  • Volání funkcí

Další informace najdete v dokumentaci k JavaScriptu na straně serveru Cosmos DB.

Tahák list SQL pro JavaScript

Následující tabulka uvádí různé dotazy SQL a odpovídající dotazy JavaScriptu. Stejně jako u dotazů SQL jsou u vlastností (například item.id) rozlišována malá a velká písmena.

Poznámka

__ (dvojité podtržítko) je alias pro getContext().getCollection() při použití rozhraní API pro dotazování jazyka JavaScript.

SQL Rozhraní API pro dotazy jazyka JavaScript Popis
VYBRALI
Z dokumentů
__. map (funkce (doc) {
    vrátit doc;
});
Výsledkem jsou všechny dokumenty (stránkované s tokenem pro pokračování) tak, jak jsou.
SELECT
   docs.id,
   docs. Message jako MSG,
   dokumenty. Actions
Z dokumentů
__. map (funkce (doc) {
    vrátit
        ID: doc.id,
        Msg: doc. Message,
        akce: doc. Actions
    };
});
Projekty ID, zprávy (aliasy) a akce ze všech dokumentů.
VYBRALI
Z dokumentů
WHERE
   docs. ID = "X998_Y998"
__. Filter (Function (doc) {
    Return doc.id = = = "X998_Y998";
});
Dotazy na dokumenty s predikátem: ID = "X998_Y998".
VYBRALI
Z dokumentů
WHERE
   ARRAY_CONTAINS (dokumentace Značky, 123)
__. Filter (Function (x) {
    Vrátí x. Tags && x. Tags. indexOf (123) >-1;
});
Dotazy na dokumenty, které mají vlastnost a značky značek, jsou pole obsahující hodnotu 123.
SELECT
   docs.id,
   docs. Message jako MSG
Z dokumentů
WHERE
   docs. ID = "X998_Y998"
__. Chain ()
    . Filter (funkce (doc) {
        Return doc.id = = = "X998_Y998";
    })
    . map (funkce (doc) {
       vrátit
            ID: doc.id,
            Msg: doc. Message
       };
    })
. Value ();
Dotaz na dokumenty s predikátem, ID = "X998_Y998" a následně projektuje ID a zprávu (aliasy do zprávy).
VYBRAT značku hodnoty
Z dokumentů
Značka JOIN v docs Značky
Seřadit podle docs._ts
__. Chain ()
    . Filter (funkce (doc) {
        vrátit dokument. Značky && Array. IsArray (doc. Značky);
    })
    . sortBy (funkce (doc) {
        vrátit doc._ts;
    })
    . Pluck ("značky")
    . plochý ()
    . Value ()
Filtry pro dokumenty, které mají vlastnost pole, značky a seřadí výsledné dokumenty pomocí vlastnosti System _ts timestamp a pak projekty + sloučí pole značek.

Další kroky

Přečtěte si další koncepty a postupy psaní a používání uložených procedur, triggerů a uživatelsky definovaných funkcí v Azure Cosmos DB: