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

A KÖVETKEZŐKRE VONATKOZIK: SQL API

Amellett, hogy lekérdezéseket ad ki az Azure Cosmos DB SQL API-jának használatával, a Cosmos DB kiszolgálóoldali SDK egy JavaScript-felületet biztosít az optimalizált lekérdezések végrehajtásához az Cosmos DB tárolt eljárásokban és eseményindítókban. A JavaScript-felület használatának SQL tisztában kell lennie a nyelvvel. A JavaScript lekérdezési API lehetővé teszi a lekérdezések programozott módon történő felépítését úgy, hogy predikátumf függvényhívások sorozatába ad át olyan szintaxist, amely ismerős az ECMAScript5 beépített tömbjéhez és olyan népszerű JavaScript-kódtárakhoz, mint a Amitash. A lekérdezéseket a JavaScript-futtatás elemezi, és hatékonyan végrehajtja őket Azure Cosmos DB indexekkel.

Támogatott JavaScript-függvények

Függvény Leírás
chain() ... .value([callback] [, options]) Elindít egy láncolt hívást, amely a value() értékkel végződik.
filter(predicateFunction [, options] [, callback]) A bemenetet egy predikátumfénnyel szűri, amely true/false (igaz/hamis) értéket ad vissza, hogy a bemeneti dokumentumokat az eredményül kapott készletbe szűrje. Ez a függvény a where záradékhoz hasonlóan viselkedik a SQL.
flatten([isShallow] [, options] [, callback]) Minden bemeneti elem tömbit egyetlen tömbbe egyesíti és simítsa össze. Ez a függvény a SELECTMany függvényhez hasonlóan viselkedik a LINQ-ban.
map(transformationFunction [, options] [, callback]) Leképezés alkalmaz egy transzformációs függvényt, amely minden bemeneti elemet leképez egy JavaScript-objektumra vagy -értékre. Ez a függvény a SELECT záradékhoz hasonlóan viselkedik a SQL.
pluck([propertyName] [, options] [, callback]) Ez a függvény egy olyan térkép parancsikonja, amely minden bemeneti elemből kinyeri egy tulajdonság értékét.
sortBy([predicate] [, options] [, callback]) Új dokumentumkészletet hoz létre a bemeneti dokumentumstream dokumentumainak növekvő sorrendbe rendezése a megadott predikátummal. Ez a függvény az ORDER BY záradékhoz hasonlóan viselkedik a SQL.
sortByDescending([predicate] [, options] [, callback]) Új dokumentumkészletet hoz létre a bemeneti dokumentumstream dokumentumainak csökkenő sorrendbe rendezése a megadott predikátummal. Ez a függvény az ORDER BY x DESC záradékhoz hasonlóan viselkedik a SQL.
unwind(collectionSelector, [resultSelector], [options], [callback]) Egy belső tömböt tartalmazó önálló illesztés végrehajtása, és az eredmények felcsatolódásaként mindkét oldalról hozzáadja az eredményeket az eredményleképítéshez. Egy személydokumentum és a person.pets például [személy, kisállat] jelölőt hozna létre. Ez hasonló a SelectMany a .NET LINQ-ban való beállításhoz.

A predikátum- és/vagy selector-függvényekbe foglalt alábbi JavaScript-szerkezetek automatikusan optimalizálva vannak, hogy közvetlenül Azure Cosmos DB indexen fusson:

  • Egyszerű = + - * / % | operátorok: ^ & == != === !=== < > <= >= || && << >> >>>!``~
  • Literálok, beleértve az objektum literális szövegét is: {}
  • var, return

A következő JavaScript-szerkezetek nem a Azure Cosmos DB vannak optimalizálva:

  • Vezérlési folyamat (például ha, for, while)
  • Függvényhívások

További információkért lásd a Cosmos DB JavaScript dokumentációját.

SQL– JavaScript-adatlap

Az alábbi táblázat különböző lekérdezéseket SQL és a megfelelő JavaScript-lekérdezéseket mutatja be. Ahogy a SQL esetében, a tulajdonságok (például a item.id) megkülönböztetik a kis- és nagybetűket.

Megjegyzés

__ A (kettős aláhúzás) a aliasa a JavaScript lekérdezési getContext().getCollection() API használata esetén.

SQL JavaScript Query API Leírás
SELECT *
FROM dokumentumok
__.map(function(doc) {
    visszatérési dokumentum;
});
Minden dokumentumot eredményként ad vissza (lapszámozott folytatási jogkivonattal).
SELECT
   docs.id,
   docs.message AS msg,
   docs.actions
FROM dokumentumok
__.map(function(doc) {
    visszatérés {
        id: doc.id,
        msg: doc.message,
        actions:doc.actions
    };
});
Lekérte az azonosítót, az üzenetet (az aliasa msg), és a műveletet az összes dokumentumból.
SELECT *
FROM dokumentumok
WHERE
   docs.id="X998_Y998"
__.filter(function(doc) {
    visszatérési doc.id =="X998_Y998";
});
Dokumentumok lekérdezése a predikátummal: id = "X998_Y998".
SELECT *
FROM dokumentumok
WHERE
   ARRAY_CONTAINS(dokumentumok. Címkék, 123)
__.filter(function(x) {
    x.Tags visszaad && x.Tags.indexOf(123) > -1;
});
A Tags (Címkék) tulajdonságot és Címkéket tartalmazó 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érdezések predikátummal (id = "X998_Y998"), majd lekérdezi az azonosítót és az üzenetet (az aliasa msg).
SELECT VALUE címke
FROM dokumentumok
JOIN címke IN dokumentumok. Címkék
ORDER BY docs._ts
__.chain()
    .filter(function(doc) {
        visszaadott dokumentum. Az && Array.isArray(doc. Címkék);
    })
    .sortBy(function(doc) {
        visszatérési doc._ts;
    })
    .pluck("Tags")
    .flatten()
    .value()
A Tags (Címkék) tömbtulajdonságú dokumentumok szűrői, az eredményül kapott dokumentumokat a _ts időbélyegző rendszertulajdonság szerint rendezi, majd projektek + simításokkal simják el a Tags tömbö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ásához és Azure Cosmos DB: