Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PLATÍ PRO: NoSQL
Kromě vydávání dotazů pomocí rozhraní API pro NoSQL ve službě Azure Cosmos DB poskytuje sada SDK na straně serveru Azure Cosmos DB rozhraní JavaScript pro provádění optimalizovaných dotazů v uložených procedurách a triggerech služby Azure Cosmos DB. Abyste mohli toto rozhraní JavaScriptu používat, nemusíte si být vědomi jazyka SQL. Rozhraní API pro dotazy JavaScriptu umožňuje programově sestavovat dotazy předáváním predikátových funkcí do posloupnosti volání funkcí se syntaxí podobnou předdefinovaným polím ECMAScript5 a oblíbeným javascriptovým knihovnám, jako je Lodash. Dotazy se analyzují modulem runtime JavaScriptu a efektivně se spouštějí pomocí indexů Azure Cosmos DB.
Podporované javascriptové funkce
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í predikátové funkce, která vrací hodnotu true/false, aby se vstupní dokumenty vyfiltrovály do výsledné sady. Tato funkce se chová podobně jako klauzule WHERE v SQL. |
flatten([isShallow] [, options] [, callback]) |
Kombinuje a zplošťuje pole z každé vstupní položky do jednoho pole. Tato funkce se chová podobně jako SelectMany v LINQ. |
map(transformationFunction [, options] [, callback]) |
Použije projekci pomocí transformační funkce, která mapuje každou vstupní položku na objekt nebo hodnotu v JavaScriptu. Tato funkce se chová podobně jako klauzule SELECT v SQL. |
pluck([propertyName] [, options] [, callback]) |
Tato funkce je zkratka 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 datovém proudu dokumentu 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ů ve vstupním datovém proudu dokumentu v sestupném pořadí pomocí daného predikátu. Tato funkce se chová podobně jako klauzule ORDER BY x DESC v SQL. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Provede samostatné spojení s vnitřním polem a přidá výsledky z obou stran jako řazené kolekce členů do projekce výsledku. Například spojení dokumentu osoby s osobou.pets by vytvořilo dvojice [osoba, domácí zvíře]. To se podobá selectMany v .NET LINQ. |
Pokud jsou součástí funkcí predikátu nebo selektoru, následující javascriptové konstruktory se automaticky optimalizují tak, aby běžely přímo na indexech Azure Cosmos DB:
- Jednoduché operátory:
=
+
-
*
/
%
|
^
&
==
!=
===
!==
<
>
<=
>=
||
&&
<<
>>
>>>
~
- Literály, včetně literálu objektu:
{}
- var, return
Následující konstrukty JavaScriptu se neoptimalizovaly pro indexy Azure Cosmos DB:
- Tok řízení:
if
for
while
- Volání funkcí
Další informace najdete v dokumentaci k JavaScriptu na straně serveru služby Azure Cosmos DB.
Tahák SQL do JavaScriptu
Následující tabulka obsahuje různé dotazy SQL a odpovídající javascriptové dotazy. Vlastnosti (například item.id
) stejně jako u dotazů SQL rozlišují malá a velká písmena.
Poznámka:
__
(dvojité podtržítko) je alias pro getContext().getCollection()
v API pro dotazy JavaScriptu.
SQL | JavaScript Query API | Popis |
---|---|---|
VYBRAT* Dokumentace FROM |
__.map(function(doc) { vrátit dokument; }); |
Výsledkem jsou všechny dokumenty (stránkované s tokenem pokračování) tak, jak jsou. |
VYBRAT docs.id, docs.zpráva AS zprávě dokumenty.akcí Dokumentace FROM |
__.map(function(doc) { return { ID: doc.id, msg: doc.message, actions:doc.actions }; }); |
Zobrazí ID, zprávu (pod názvem msg) a akci ze všech dokumentů. |
VYBRAT* Dokumentace FROM kde docs.id="X998_Y998" |
__.filter(function(doc) { return doc.id ==="X998_Y998"; }); |
Dotazy na dokumenty s predikátem: id = "X998_Y998". |
VYBRAT* Dokumentace FROM kde ARRAY_CONTAINS(dokumenty.Značky, 123) |
__.filter(function(x) { return x.Tags && x.Tags.indexOf(123) > -1; }); |
Dotazy na dokumenty, které mají vlastnost Značky, přičemž Značky je pole obsahující hodnotu 123. |
VÝBĚR docs.id, docs.message AS msg Dokumentace FROM kde docs.id="X998_Y998" |
__.chain() .filter(function(doc) { return doc.id ==="X998_Y998"; }) .map(function(doc) { return { ID: doc.id, msg: doc.message }; }) .value(); |
Dotazuje se na dokumenty s predikátem, id = "X998_Y998", a poté zobrazuje id a zprávu (alias msg). |
SELECT VALUE tag Dokumentace FROM JOIN tag IN docs. Štítky ORDER BY docs._ts |
__.chain() .filter(function(doc) { vrátit doc.Tags && Array.isArray(doc.Tags); }) .sortBy(function(doc) { return doc._ts }) .pluck("Štítky") .flatten() .value() |
Filtry pro dokumenty, které mají pole Značky, a seřadí tyto dokumenty podle systémové vlastnosti časového razítka _ts, poté promítne a zploští pole Značky. |
Další kroky
Přečtěte si další koncepty a postupy pro zápis a používání uložených procedur, triggerů a uživatelem definovaných funkcí ve službě Azure Cosmos DB:
- Postup zápisu uložených procedur a triggerů pomocí rozhraní JAVAScript Query API
- Práce s uloženými procedurami, triggery a uživatelem definovanými funkcemi služby Azure Cosmos DB
- Jak používat uložené procedury, triggery, uživatelem definované funkce ve službě Azure Cosmos DB
- Referenční informace k rozhraní API na straně serveru služby Azure Cosmos DB v JavaScriptu
- JavaScript ES6 (ECMA 2015)