Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Para além de emitir consultas usando a API para NoSQL no Azure Cosmos DB, o SDK servidor do Azure Cosmos DB fornece uma interface JavaScript para realizar consultas otimizadas nos Stored Procedures and Triggers do Azure Cosmos DB. Não precisa de conhecer a linguagem SQL para usar esta interface JavaScript. A API de consulta JavaScript permite-lhe construir consultas programaticamente passando funções de predicado em sequência de chamadas de funções, com uma sintaxe semelhante às matrizes incorporadas no ECMAScript5 e às populares bibliotecas JavaScript como o Lodash. As consultas são analisadas pelo tempo de execução JavaScript e executadas de forma eficiente usando índices do Azure Cosmos DB.
Funções JavaScript suportadas
| Function | Descrição |
|---|---|
chain() ... .value([callback] [, options]) |
Inicia uma chamada encadeada que deve ser terminada com value(). |
filter(predicateFunction [, options] [, callback]) |
Filtra os documentos de entrada usando uma função de predicado que devolve verdadeiro ou falso, para incluir ou excluir documentos no conjunto resultante. Esta função comporta-se de forma semelhante a uma cláusula WHERE em SQL. |
flatten([isShallow] [, options] [, callback]) |
Combina e achata os arrays de cada item de entrada num único array. Esta função comporta-se de forma semelhante ao SelectMany no LINQ. |
map(transformationFunction [, options] [, callback]) |
Aplica uma projeção utilizando uma função de transformação que mapeia cada item de entrada para um objeto ou valor JavaScript. Esta função comporta-se de forma semelhante a uma cláusula SELECT em SQL. |
pluck([propertyName] [, options] [, callback]) |
Esta função é um atalho para um mapa que extrai o valor de uma única propriedade de cada item de entrada. |
sortBy([predicate] [, options] [, callback]) |
Produz um novo conjunto de documentos ordenando os documentos no fluxo de documentos de entrada por ordem crescente usando o predicado indicado. Esta função comporta-se de forma semelhante a uma cláusula ORDER BY em SQL. |
sortByDescending([predicate] [, options] [, callback]) |
Produz um novo conjunto de documentos ordenando os documentos do fluxo de documentos de entrada por ordem decrescente usando o predicado dado. Esta função comporta-se de forma semelhante a uma cláusula ORDER BY x DESC em SQL. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Realiza uma auto-junção com array interior e soma resultados de ambos os lados como tuplas à projeção resultante. Por exemplo, juntar um documento person com person.pets produziria tuplas [pessoa, animal]. Isto é semelhante ao SelectMany no .NET LINQ. |
Quando incluídos dentro de funções de predicado e/ou seletor, os seguintes construtos JavaScript são automaticamente otimizados para correr diretamente nos índices do Azure Cosmos DB:
- Operadores simples:
=+-*/%|^&==!====!==<><=>=||&&<<>>>>>~ - Literais, incluindo o objeto literal:
{} - var, return
Os seguintes construtos JavaScript não são otimizados para índices do Azure Cosmos DB:
- Controlo do fluxo:
ifforwhile - Chamadas de função
Para mais informações, consulte a Documentação de JavaScript do Lado do Servidor do Azure Cosmos DB.
Folha de dicas de SQL para JavaScript
A tabela seguinte apresenta várias consultas SQL e as respetivas consultas JavaScript. Tal como nas consultas SQL, as propriedades (por exemplo, item.id) são sensíveis a maiúsculas e minúsculas.
Observação
__ (duplo sublinhado) é um alias para getContext().getCollection() quando se utiliza a API de consulta JavaScript.
| SQL | API de Consulta JavaScript | Descrição |
|---|---|---|
| SELECT * DE documentação |
__.map(função(doc) { devolver o documento; }); |
Os resultados em todos os documentos (paginados com token de continuação) tal como está. |
| SELECIONAR docs.id, docs.message AS msg, docs.actions DA documentação |
__.map(function(doc) { return { id: doc.id, MSG: Doc.Message, Ações:Doc.Ações }; }); |
Projeta o id, a mensagem (aliasada para msg) e a ação de todos os documentos. |
| SELECT * DA documentação WHERE docs.id="X998_Y998" |
__.filter(function(doc) { return doc.id ==="X998_Y998"; }); |
Consultas de documentos que possuem o predicado: id = "X998_Y998". |
| SELECT * DA documentação WHERE ARRAY_CONTAINS(docs.Tags, 123) |
__.filter(função(x) { return x.Tags && x.Tags.indexOf(123) > -1; }); |
Consultas para documentos que possuem uma propriedade Tags, sendo que Tags é um array que contém o valor 123. |
| SELECT docs.id, docs.message AS MSG DA documentação 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(); |
Consultas para documentos com um predicado, id = "X998_Y998", e depois projeta o id e a mensagem (apelidada de msg). |
| SELECIONAR ETIQUETA DE VALOR DA documentação JOIN tag IN documentação. Etiquetas ORDEM POR docs._ts |
__.chain() .filter(function(doc) { return doc.Tags && Array.isArray(doc.Tags); }) .sortBy(function(doc) { retorno doc._ts; }) .extrair("Etiquetas") .flatten() .value() |
Filtra documentos que possuem uma propriedade de array chamada Tags, ordena os documentos resultantes pela propriedade de sistema _ts (carimbo temporal) e, em seguida, projeta e achata o array de Tags. |
Próximos passos
Aprenda mais conceitos e como escrever e usar procedimentos armazenados, triggers e funções definidas pelo utilizador no Azure Cosmos DB:
- Como escrever procedimentos armazenados e triggers usando a API de Consulta JavaScript
- Trabalhar com procedimentos armazenados, triggers e funções definidas pelo utilizador do Azure Cosmos DB
- Como usar procedimentos armazenados, triggers, funções definidas pelo utilizador no Azure Cosmos DB
- Referência da API do lado do servidor do Azure Cosmos DB JavaScript
- JavaScript ES6 (ECMA 2015)