JavaScript lekérdezési API az Azure Cosmos DB-ben

A KÖVETKEZŐKRE VONATKOZIK: SQL API

A Azure Cosmos DBban található SQL API-val végzett lekérdezések mellett a Cosmos db KISZOLGÁLÓOLDALI SDK JavaScript- felületet biztosít az optimalizált lekérdezések végrehajtásához Cosmos db tárolt eljárások és eseményindítók esetében. Ennek a JavaScript-felületnek a használatához nem kell tisztában lennie az SQL-nyelvvel. A JavaScript lekérdezési API lehetővé teszi, hogy programozott módon hozza létre a lekérdezéseket úgy, hogy a predikátum függvényeit átadja a függvények sorrendjének, és egy olyan szintaxist, amely ismerős a ECMAScript5's Array beépített és népszerű JavaScript-kódtárak, például a Lodash használatával. A lekérdezéseket a JavaScript futtatókörnyezet elemzi, és a Azure Cosmos DB indexek használatával hatékonyan hajtja végre.

Támogatott JavaScript-függvények

Függvény Leírás
chain() ... .value([callback] [, options]) Elindít egy láncolt hívást, amelyet a Value () értékkel kell megszakítani.
filter(predicateFunction [, options] [, callback]) Kiszűri a bemenetet egy olyan predikátum-függvénnyel, amely igaz/hamis értéket ad vissza a bemeneti dokumentumok a létrejövő készletbe való szűréséhez. Ez a függvény a WHERE záradékhoz hasonlóan viselkedik az SQL-ben.
flatten([isShallow] [, options] [, callback]) Az egyes bemeneti elemek tömbjét egyetlen tömbbe kombinálja és lelapulja. Ez a függvény a LINQ SelectMany hasonló módon viselkedik.
map(transformationFunction [, options] [, callback]) Egy olyan átalakítási függvényt alkalmaz, amely az egyes bemeneti elemeket egy JavaScript-objektumra vagy-értékre képezi le. Ez a függvény az SQL SELECT záradékához hasonlóan viselkedik.
pluck([propertyName] [, options] [, callback]) Ez a függvény egy olyan Térkép parancsikonja, amely kibontja az egyes bemeneti elemek egyetlen tulajdonságának értékét.
sortBy([predicate] [, options] [, callback]) Új dokumentumokat hoz létre azáltal, hogy a megadott predikátum használatával növekvő sorrendben rendezi a dokumentumokat a bemeneti dokumentum adatfolyamában. Ez a függvény az SQL ORDER BY záradékához hasonlóan viselkedik.
sortByDescending([predicate] [, options] [, callback]) Új dokumentumokat hoz létre a bemeneti dokumentum adatfolyamában lévő dokumentumok csökkenő sorrendbe rendezésével a megadott predikátum használatával. Ez a függvény az SQL-ben az ORDER BY x DESC záradékhoz hasonlóan viselkedik.
unwind(collectionSelector, [resultSelector], [options], [callback]) Egy önillesztést végez a belső tömbben, és a rekordok mindkét oldaláról az eredményeket adja eredményként. Például személyre szóló dokumentumot kell összekapcsolni. a háziállatok [person, PET] rekordok hoznak létre. Ez hasonló a .NET-hivatkozás SelectMany.

A predikátum és/vagy választó függvények részét képező következő JavaScript-összeállítások automatikusan Azure Cosmos DB indexeken való futtatásra vannak optimalizálva:

  • Egyszerű operátorok = + - * / : % | ^ & == != === !=== < > <= >= || && << >> >>>!``~
  • Literálok, beleértve az objektum szövegkonstans-ját: {}
  • var, visszatérés

A következő JavaScript-szerkezetek nem optimalizáltak Azure Cosmos DB indexekhez:

  • Vezérlési folyamat (például, ha,, míg)
  • Függvények hívásai

További információ: Cosmos db kiszolgálóoldali JavaScript-dokumentáció.

SQL – JavaScript Cheat Sheet

Az alábbi táblázat különböző SQL-lekérdezéseket és a kapcsolódó JavaScript-lekérdezéseket ismerteti. Az SQL-lekérdezésekhez hasonlóan a tulajdonságok (például a item.id) is megkülönböztetik a kis-és nagybetűket.

Megjegyzés

__ (dupla aláhúzás) getContext().getCollection() a JavaScript lekérdezési API használatakor használt alias.

SQL JavaScript lekérdezési API Leírás
Válassza
A docs-ból
__. map (függvény (doc) {
    visszatérési doc;
});
A rendszer az összes dokumentumot (a folytatási tokent tartalmazó tördeléssel) jeleníti meg.
SELECT
   docs.id,
   docs. Message AS msg,
   docs. Actions
A docs-ból
__. map (függvény (doc) {
    visszatérési
        azonosító: doc.id,
        msg: doc. Message,
        műveletek: doc. Actions
    };
});
Megtervezi az azonosítót, az üzenetet (az msg-aliast) és az összes dokumentum műveletét.
Válassza
A docs-ból
WHERE
   docs. id = "X998_Y998"
__. Filter (függvény (doc) {
    visszatérési doc.id = = = "X998_Y998";
});
Dokumentumok lekérdezése a következő predikátummal: azonosító = "X998_Y998".
Válassza
A docs-ból
WHERE
   ARRAY_CONTAINS (docs. Címkék, 123)
__. Filter (függvény (x) {
    visszatérés x. Tags && x. Tags. indexOf (123) >-1;
});
A címkék tulajdonsággal rendelkező dokumentumok lekérdezései egy olyan tömb, amely a 123 értéket tartalmazza.
SELECT
   docs.id,
   docs. Message AS msg
A docs-ból
WHERE
   docs. id = "X998_Y998"
__. Chain ()
    . Filter (függvény (doc) {
        visszatérési doc.id = = = "X998_Y998";
    })
    . map (függvény (doc) {
       visszatérési
            azonosító: doc.id,
            msg: doc. Message
       };
    })
. Value ();
A dokumentumok lekérdezése predikátummal, azonosító = "X998_Y998", majd a projekt az azonosító és az üzenet (msg-ben alias).
ÉRTÉK címke kiválasztása
A docs-ból
JOIN tag a docs-ban. Címkék
ORDER BY docs._ts
__. Chain ()
    . Filter (függvény (doc) {
        bizonylat visszaküldése Címkék && Array. isArray (doc). Címkék);
    })
    . sortBy (Function (doc) {
        doc._ts visszaadása;
    })
    . összeszed ("címkék")
    . simítsa ()
    . Value ()
A Array tulajdonsággal rendelkező dokumentumok szűrői, a címkék és az eredményül kapott dokumentumok rendezése a _ts timestamp System tulajdonsággal, majd a projects + lelapul a címkék tömbjét.

Következő lépések

További fogalmak és útmutató: tárolt eljárások, eseményindítók és felhasználó által definiált függvények írása és használata Azure Cosmos DBban: