Megosztás a következőn keresztül:


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: