JavaScript lekérdezési API az Azure Cosmos DB-ben
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Az Azure Cosmos DB-ben az API for NoSQL-t használó lekérdezések kiadása mellett az Azure Cosmos DB kiszolgálóoldali SDK egy JavaScript-felületet biztosít az optimalizált lekérdezések azure Cosmos DB tárolt eljárásokban és triggerekben való végrehajtásához. Ennek a JavaScript-felületnek a használatához nem kell tisztában lennie az SQL nyelvével. A JavaScript lekérdezési API lehetővé teszi a lekérdezések programozását úgy, hogy predikátumfüggvényeket ad át függvényhívások sorozatába, az ECMAScript5 tömb beépített tömbjeihez és a népszerű JavaScript-kódtárakhoz, például a Lodashhoz hasonló szintaxissal. A lekérdezéseket a JavaScript-futtatókörnyezet elemzi, és hatékonyan hajtja végre az Azure Cosmos DB indexekkel.
Támogatott JavaScript-függvények
Függvény | Leírás |
---|---|
chain() ... .value([callback] [, options]) |
Egy láncolt hívást indít el, amelyet érték(ek) használatával kell leállíteni. |
filter(predicateFunction [, options] [, callback]) |
A bemenetet egy igaz/hamis értéket visszaadó predikátumfüggvény használatával szűri, hogy a bemeneti dokumentumok be- és kiszűrése az eredményül kapott készletbe legyen. Ez a függvény az SQL WHERE záradékához hasonlóan működik. |
flatten([isShallow] [, options] [, callback]) |
Egyesíti és összesimítja a tömböket az egyes bemeneti elemekből egyetlen tömbbe. Ez a függvény a LINQ SelectMany függvényéhez hasonlóan működik. |
map(transformationFunction [, options] [, callback]) |
Olyan leképezést alkalmaz, amely egy olyan transzformációs függvényt ad, amely minden bemeneti elemet Egy JavaScript-objektumhoz vagy értékhez rendel. Ez a függvény az SQL SELECT záradékához hasonlóan működik. |
pluck([propertyName] [, options] [, callback]) |
Ez a függvény egy olyan térkép parancsikonja, amely minden bemeneti elemből kinyeri egyetlen tulajdonság értékét. |
sortBy([predicate] [, options] [, callback]) |
Új dokumentumkészletet hoz létre a bemeneti dokumentumfolyam dokumentumainak növekvő sorrendbe rendezésével az adott predikátum használatával. Ez a függvény az SQL ORDER BY záradékához hasonlóan működik. |
sortByDescending([predicate] [, options] [, callback]) |
Új dokumentumkészletet hoz létre a bemeneti dokumentum adatfolyamában lévő dokumentumok csökkenő sorrendbe rendezésével az adott predikátum használatával. Ez a függvény az SQL ORDER BY x DESC záradékához hasonlóan működik. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Önillesztés végrehajtása belső tömbökkel, és mindkét oldalról hozzáadja az eredményeket az eredményvetítéshez. Ha például egy személydokumentumot a person.pets fájllal összekapcsol, [személy, kisállat] csuplokat hozna létre. Ez hasonló a .NET LINQ SelectMany eleméhez. |
Ha a predikátum- és/vagy választófüggvényekben szerepel, a következő JavaScript-szerkezetek automatikusan optimalizálva lesznek, hogy közvetlenül az Azure Cosmos DB-indexeken fussanak:
- Egyszerű operátorok:
=
+
-
*
/
%
|
^
&
==
!=
===
!==
<
>
<=
>=
||
&&
<<
>>
>>>
~
- Literálok, beleértve az objektumkonstanst is:
{}
- var, return
A következő JavaScript-szerkezetek nem lesznek optimalizálva az Azure Cosmos DB-indexekhez:
- Vezérlési folyamat:
if
for
while
- Függvényhívások
További információkért tekintse meg az Azure Cosmos DB kiszolgálóoldali JavaScript-dokumentációját.
SQL-ről JavaScriptre – csali
Az alábbi táblázat különböző SQL-lekérdezéseket és a hozzájuk tartozó JavaScript-lekérdezéseket mutatja be. Az SQL-lekérdezésekhez hasonlóan a tulajdonságok (például item.id
) megkülönböztetik a kis- és nagybetűket.
Feljegyzés
__
(dupla aláhúzás) a JavaScript lekérdezési API használatakor használt getContext().getCollection()
alias.
SQL | JavaScript Query API | Leírás |
---|---|---|
KIVÁLASZT* FROM-dokumentumok |
__.map(function(doc) { visszatérési dokumentum; }); |
Minden dokumentumot (a folytatási jogkivonattal lapszámozott) a következőképpen jelenít meg. |
KIVÁLASZT docs.id, docs.message AS msg, docs.actions FROM-dokumentumok |
__.map(function(doc) { return { id: doc.id, msg: doc.message, actions:doc.actions }; }); |
Az azonosítót, az üzenetet (msg-hez aliasolt) és a műveletet az összes dokumentumból kiveti. |
KIVÁLASZT* FROM-dokumentumok WHERE docs.id="X998_Y998" |
__.filter(function(doc) { visszatérési doc.id ==="X998_Y998"; }); |
Lekérdezések a következő predikátumú dokumentumokhoz: id = "X998_Y998". |
KIVÁLASZT* FROM-dokumentumok WHERE ARRAY_CONTAINS(dokumentumok). Címkék, 123) |
__.filter(függvény(x) { x.Tags &> x.Tags.indexOf(123) > -1; }); |
A Címkék és Címkék tulajdonságú dokumentumok lekérdezései a 123 értéket tartalmazó tömbök. |
SELECT docs.id, docs.message AS msg FROM-dokumentumok WHERE docs.id="X998_Y998" |
__.chain() .filter(function(doc) { visszatérési doc.id ==="X998_Y998"; }) .map(function(doc) { return { id: doc.id, msg: doc.message }; }) .value(); |
Lekérdezi a predikátummal rendelkező dokumentumokat, az id = "X998_Y998", majd az azonosítót és az üzenetet (msg-nek aliasálva). |
SELECT VALUE tag FROM-dokumentumok JOIN tag IN docs. Címkék ORDER BY docs._ts |
__.chain() .filter(function(doc) { visszatérési dokumentum. Tags &> Array.isArray(doc. Címkék); }) .sortBy(function(doc) { visszatérési doc._ts; }) .pluck("Címkék") .simított() .value() |
Szűri a tömbtulajdonságokkal, címkékkel és az eredményként kapott dokumentumokat a _ts időbélyegrendszer-tulajdonság alapján, majd a projektek és a Címkék tömb simításával. |
Következő lépések
További fogalmak és útmutató tárolt eljárások, triggerek és felhasználó által definiált függvények írásához és használatához az Azure Cosmos DB-ben:
- Tárolt eljárások és triggerek írása JavaScript Query API használatával
- Az Azure Cosmos DB tárolt eljárásainak, eseményindítóinak és felhasználó által definiált függvényeinek használata
- Tárolt eljárások, eseményindítók, felhasználó által definiált függvények használata az Azure Cosmos DB-ben
- Azure Cosmos DB JavaScript kiszolgálóoldali API-referencia
- JavaScript ES6 (ECMA 2015)