Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Oltre a eseguire query usando l'API per NoSQL in Azure Cosmos DB, l'SDK lato server di Azure Cosmos DB offre un'interfaccia JavaScript per l'esecuzione di query ottimizzate nelle stored procedure e nei trigger di Azure Cosmos DB. Non è necessario essere consapevoli del linguaggio SQL per usare questa interfaccia JavaScript. L'API di query JavaScript consente di costruire query in modo programmatico passando funzioni di predicato in una sequenza di chiamate di funzione, con una sintassi simile alle funzioni integrate per gli array di ECMAScript5 e alle librerie JavaScript più diffuse come Lodash. Le query vengono analizzate dal runtime JavaScript ed eseguite in modo efficiente usando gli indici di Azure Cosmos DB.
Funzioni JavaScript supportate
| Function | Descrizione |
|---|---|
chain() ... .value([callback] [, options]) |
Inizia una chiamata concatenata che deve essere terminata con value(). |
filter(predicateFunction [, options] [, callback]) |
Filtra l'input utilizzando una funzione predicato che restituisce vero/falso per includere o escludere i documenti di input nel set risultante. Questa funzione si comporta in modo simile a una clausola WHERE in SQL. |
flatten([isShallow] [, options] [, callback]) |
Combina e appiattisce gli array di ogni elemento di input in un unico array. Questa funzione si comporta in modo simile a SelectMany in LINQ. |
map(transformationFunction [, options] [, callback]) |
Applica una proiezione in base a una funzione di trasformazione che esegue il mapping di ogni elemento di input a un oggetto o un valore JavaScript. Questa funzione si comporta in modo simile a una clausola SELECT in SQL. |
pluck([propertyName] [, options] [, callback]) |
Questa funzione è un collegamento per una mappa che estrae il valore di una singola proprietà da ogni elemento di input. |
sortBy([predicate] [, options] [, callback]) |
Produce un nuovo set di documenti ordinando i documenti nel flusso del documento di input in ordine crescente usando il predicato specificato. Questa funzione si comporta in modo simile a una clausola ORDER BY in SQL. |
sortByDescending([predicate] [, options] [, callback]) |
Produce un nuovo set di documenti ordinando i documenti nel flusso del documento di input in ordine decrescente usando il predicato specificato. Questa funzione si comporta in modo simile a una clausola ORDER BY x DESC in SQL. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Esegue un self join con inner array e aggiunge i risultati da entrambi i lati come di tuple alla proiezione dei risultati. Ad esempio, l'aggiunta di un documento Person con person.pets produrrebbe tuple [person, pet]. Questo è simile a SelectMany in .NET LINQ. |
Se inclusi all'interno di funzioni predicati e/o selettori, i costrutti JavaScript seguenti vengono ottimizzati automaticamente per l'esecuzione direttamente negli indici di Azure Cosmos DB:
- Operatori semplici:
=+-*/%|^&==!====!==<><=>=||&&<<>>>>>~ - Valori letterali, incluso il valore letterale dell'oggetto:
{} - var, return
I costrutti JavaScript seguenti non vengono ottimizzati per gli indici di Azure Cosmos DB:
- Flusso di controllo:
ifforwhile - Chiamate di funzione
Per altre informazioni, vedere la documentazione javaScript lato server di Azure Cosmos DB.
Foglio riassuntivo di SQL a JavaScript
La tabella seguente presenta varie query SQL e le query JavaScript corrispondenti. Come le query SQL, le proprietà (ad esempio item.id) fanno distinzione tra maiuscole e minuscole.
Annotazioni
__ (doppio carattere di sottolineatura) è un alias per getContext().getCollection() quando si usa l'API di query JavaScript.
| SQL | JavaScript Query API | Descrizione |
|---|---|---|
| SELECT * DALLA DOCUMENTAZIONE |
__.map(function(doc) { restituire il documento; }); |
Restituisce tutti i documenti (impaginati con token di continuazione) nella loro forma originale. |
| SELEZIONARE docs.id, docs.message AS msg, docs.actions DALLA DOCUMENTAZIONE |
__.map(function(doc) { return { id: doc.id, msg: doc.message, actions:doc.actions }; }); |
Proietta gli ID, i messaggi (con alias "msg") e le azioni da tutti i documenti. |
| SELEZIONA * Dalla documentazione WHERE docs.id="X998_Y998" |
__.filter(function(doc) { return doc.id ==="X998_Y998"; }); |
Query per i documenti con il predicato: id = "X998_Y998". |
| SELECT * FROM docs WHERE ARRAY_CONTAINS(docs.Tags, 123) |
__.filter(function(x) { return x.Tags && x.Tags.indexOf(123) > -1; }); |
Esegue una query sui documenti che hanno una proprietà Tags e Tags è una matrice che contiene il valore 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(); |
Esegue una query sui documenti con un predicato id = "X998_Y998" e quindi proietta l'ID e il messaggio (con aliasing effettuato a msg). |
| SELECT VALUE tag DALLA DOCUMENTAZIONE JOIN tag IN docs.Tags ORDER BY docs._ts |
__.chain() .filter(function(doc) { restituisce doc.Tags && Array.isArray(doc.Tags); }) .sortBy(function(doc) { restituire doc._ts; }) .pluck("Tags") .flatten() .value() |
Filtra i documenti che hanno la proprietà di matrice Tags, ordina i documenti risultanti in base alla proprietà di sistema timestamp _ts e quindi proietta e appiattisce la matrice Tags. |
Passaggi successivi
Altre informazioni su come scrivere e usare stored procedure, trigger e funzioni definite dall'utente in Azure Cosmos DB:
- Come scrivere stored procedure e trigger usando l'API di query di Javascript
- Uso delle stored procedure, dei trigger e delle funzioni definite dall'utente di Azure Cosmos DB
- Come usare le stored procedure, i trigger e le funzioni definite dall'utente in Azure Cosmos DB
- Informazioni di riferimento sulle API sul lato server JavaScript di Azure Cosmos DB
- JavaScript ES6 (ECMA 2015)