Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Outre l’émission de requêtes à l’aide de l’API pour NoSQL dans Azure Cosmos DB, le Kit de développement logiciel (SDK) côté serveur Azure Cosmos DB fournit une interface JavaScript pour effectuer des requêtes optimisées dans des procédures stockées et des déclencheurs Azure Cosmos DB. Vous n’avez pas besoin de connaître le langage SQL pour utiliser cette interface JavaScript. L’API de requête JavaScript vous permet de générer des requêtes par programmation en passant des fonctions de prédicat en séquence d’appels de fonction, avec une syntaxe similaire aux bibliothèques intégrées au tableau ECMAScript5 et aux bibliothèques JavaScript populaires comme Lodash. Les requêtes sont analysées par le runtime JavaScript et exécutées efficacement à l’aide d’index Azure Cosmos DB.
Fonctions JavaScript prises en charge
| Fonction | Description |
|---|---|
chain() ... .value([callback] [, options]) |
Démarre un appel chaîné qui doit être arrêté avec value(). |
filter(predicateFunction [, options] [, callback]) |
Filtre l’entrée à l’aide d’une fonction de prédicat qui renvoie true/false afin de filtrer les documents d’entrée dans le jeu résultant. Cette fonction se comporte comme une clause WHERE dans SQL. |
flatten([isShallow] [, options] [, callback]) |
Combine et aplatit les tableaux à partir de chaque élément d’entrée en un seul tableau. Cette fonction se comporte comme SelectMany dans LINQ. |
map(transformationFunction [, options] [, callback]) |
Applique une projection donnée à une fonction de transformation qui mappe chaque élément d’entrée à un objet ou une valeur JavaScript. Cette fonction se comporte comme une clause SELECT dans SQL. |
pluck([propertyName] [, options] [, callback]) |
Cette fonction est un raccourci pour une carte qui extrait la valeur d’une propriété unique à partir de chaque élément d’entrée. |
sortBy([predicate] [, options] [, callback]) |
Produit un nouvel ensemble de documents en triant les documents dans le flux de documents d’entrée dans l’ordre croissant à l’aide du prédicat donné. Cette fonction se comporte comme une clause ORDER BY dans SQL. |
sortByDescending([predicate] [, options] [, callback]) |
Produit un nouvel ensemble de documents en triant les documents dans le flux de documents d’entrée dans l’ordre décroissant à l’aide du prédicat donné. Cette fonction se comporte comme une clause ORDER BY x DESC dans SQL. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Effectue une jointure réflexive avec tableau interne et ajoute les résultats des deux côtés, sous forme de tuples, à la projection de résultats. Par exemple, joindre un document person avec person.pets produirait des tuples [person, pet]. Cela est similaire à SelectMany dans .NET LINQ. |
Lorsqu’elles sont incluses dans les fonctions de prédicat et/ou de sélecteur, les constructions JavaScript suivantes sont automatiquement optimisées pour s’exécuter directement sur les index Azure Cosmos DB :
- Opérateurs simples :
=+-*/%|^&==!====!==<><=>=||&&<<>>>>>~ - Littéraux, y compris le littéral de l’objet :
{} - var, return
Les constructions JavaScript suivantes ne sont pas optimisées pour les index Azure Cosmos DB :
- Flux de contrôle :
ifforwhile - Appels de fonction
Pour plus d’informations, consultez la documentation JavaScript côté serveur Azure Cosmos DB.
Aide-mémoire SQL vers JavaScript
Le tableau suivant présente différentes requêtes SQL et les requêtes JavaScript correspondantes. Comme pour les requêtes SQL, les propriétés (par exemple, item.id) respectent la casse.
Note
__ (trait de soulignement double) est un alias pour getContext().getCollection() lorsqu'on utilise l'API de requête JavaScript.
| SQL | API de requête JavaScript | Description |
|---|---|---|
| SÉLECTIONNEZ* Provenant de 'docs' |
__.map(function(doc) { document de retour ; }); |
Renvoie tous les documents (paginés avec jeton de continuation) tels quels. |
| SÉLECTIONNEZ docs.id, docs.message AS msg, docs.actions FROM docs |
__.map(function(doc) { return { id: doc.id, msg: doc.message, actions:doc.actions }; }); |
Projette l’ID, le message (alias msg) et l’action de tous les documents. |
| SÉLECTIONNEZ* FROM docs WHERE docs.id="X998_Y998" |
__.filter(function(doc) { return doc.id ==="X998_Y998 » ; }); |
Requêtes pour les documents avec le prédicat : id = « X998_Y998 ». |
| SÉLECTIONNEZ* FROM docs WHERE ARRAY_CONTAINS(docs.Tags, 123) |
__.filter(function(x) { return x.Tags && x.Tags.indexOf(123) > -1 ; }); |
Requêtes pour les documents qui ont une propriété Tags, où Tags est un tableau contenant la valeur 123. |
| SELECT docs.id, docs.message AS msg FROM docs WHERE docs.id="X998_Y998" |
__.chain() .filter(function(doc) { return doc.id ==="X998_Y998 » ; }) .map(function(doc) { return { id: doc.id, msg: doc.message }; }) .value() ; |
Interroge les documents avec un prédicat, id = "X998_Y998", puis projette l’ID et le message (alias msg). |
| SELECT VALUE tag FROM docs JOIN tag IN docs.Tags ORDER BY docs._ts |
__.chain() .filter(function(doc) { retourne doc.Tags && Array.isArray(doc.Tags); }) .sortBy(function(doc) { retourner doc._ts; }) .pluck("Tags") .flatten() .value() |
Filtre les documents comportant une propriété de tableau, Tags, trie les documents résultants par la propriété système _ts timestamp, puis projette et aplatit le tableau Tags. |
Étapes suivantes
Découvrez plus de concepts et de procédures pour écrire et utiliser des procédures stockées, des déclencheurs et des fonctions définies par l’utilisateur dans Azure Cosmos DB :
- Comment écrire des procédures stockées et des déclencheurs à l’aide de l’API de requête JavaScript
- Utilisation des procédures stockées, des déclencheurs et des fonctions définies par l’utilisateur Azure Cosmos DB
- Comment utiliser des procédures stockées, des déclencheurs, des fonctions définies par l’utilisateur dans Azure Cosmos DB
- Informations de référence sur l’API côté serveur JavaScript d’Azure Cosmos DB
- JavaScript ES6 (ECMA 2015)