Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Além de emitir consultas usando a API para NoSQL no Azure Cosmos DB, o SDK do lado do servidor do Azure Cosmos DB fornece uma interface JavaScript para executar consultas otimizadas nos Procedimentos Armazenados e Gatilhos do Azure Cosmos DB. Você não precisa estar ciente da linguagem SQL para usar essa interface JavaScript. A API de consulta do JavaScript permite a você criar consultas de forma programática passando funções de predicado em uma sequência de chamadas de função, com uma sintaxe similar para bibliotecas JavaScript internas e populares da matriz do ECMAScript5, como Lodash. As consultas são analisadas pelo runtime do JavaScript e executadas com eficiência usando índices do Azure Cosmos DB.
Funções JavaScript com suporte
| Função | Descrição |
|---|---|
chain() ... .value([callback] [, options]) |
Inicia uma chamada encadeada que deve ser encerrada com value(). |
filter(predicateFunction [, options] [, callback]) |
Filtra a entrada usando uma função de predicado que retorna true/false para filtrar documentos de entrada/saída no conjunto resultante. Essa função se comporta de forma semelhante a uma cláusula WHERE no SQL. |
flatten([isShallow] [, options] [, callback]) |
Combina e nivela matrizes de cada item de entrada em uma única matriz. Essa função se comporta de forma semelhante a SelectMany no LINQ. |
map(transformationFunction [, options] [, callback]) |
Aplica uma projeção determinada a uma função de transformação que mapeia cada item de entrada para um objeto ou valor JavaScript. Essa função se comporta de forma semelhante a uma cláusula SELECT no SQL. |
pluck([propertyName] [, options] [, callback]) |
Essa 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 classificando os documentos no fluxo de documentos de entrada em ordem crescente usando o predicado fornecido. Essa função se comporta de forma semelhante a uma cláusula ORDER BY no SQL. |
sortByDescending([predicate] [, options] [, callback]) |
Produz um novo conjunto de documentos classificando os documentos no fluxo de documentos de entrada em ordem decrescente usando o predicado fornecido. Essa função se comporta de forma semelhante a uma cláusula ORDER BY x DESC no SQL. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Executa uma autojunção com a matriz interna e adiciona os resultados de ambos os lados como tuplas à projeção de resultados. Por exemplo, o ingresso de um documento de pessoas com person.pets produzirá as tuplas [pessoas, animais de estimação]. Isso é semelhante ao SelectMany no LINQ do .NET. |
Quando incluídos dentro de funções de predicado e/ou seletor, os seguintes constructos JavaScript são otimizados automaticamente para serem executados diretamente nos índices do Azure Cosmos DB:
- Operadores simples:
=+-*/%|^&==!====!==<><=>=||&&<<>>>>>~ - Literais, incluindo o literal de objeto:
{} - var (variável), return (retornar)
Os seguintes constructos JavaScript não são otimizados para índices do Azure Cosmos DB:
- Fluxo de controle:
ifforwhile - Chamadas de função
Para obter mais informações, consulte a Documentação do JavaScript do Servidor do Azure Cosmos DB.
Folha de referências do SQL para JavaScript
A tabela a seguir apresenta várias consultas SQL e as consultas JavaScript correspondentes. Assim como acontece nas consultas SQL, as propriedades (por exemplo, item.id) diferenciam maiúsculas de minúsculas.
Observação
__ (sublinhado duplo) é um apelido para getContext().getCollection() ao usar a API de consulta JavaScript.
| SQL | API de Consulta JavaScript | Descrição |
|---|---|---|
| SELECIONAR * FROM docs |
__.map(function(doc) { return doc; }); |
Resulta em todos os documentos (paginados com o token de continuação) no estado em que se encontram. |
| SELECIONE docs.id, docs.message AS msg, docs.actions Documentação do FROM |
__.map(function(doc) { return { id: doc.id, msg: doc.message, actions:doc.actions }; }); |
Projeta a ID, a mensagem (com o alias msg) e a ação de todos os documentos. |
| SELECIONAR * Documentação do FROM WHERE docs.id="X998_Y998" |
__.filter(function(doc) { retornar doc.id ==="X998_Y998"; }); |
Consultas sobre documentos com o predicado: id = "X998_Y998". |
| SELECIONAR * Documentação do FROM WHERE ARRAY_CONTAINS(docs.Tags, 123) |
__.filter(function(x) { return x.Tags && x.Tags.indexOf(123) > -1; }); |
Consulta documentos com uma propriedade Tags, e Tags é uma matriz que contém o valor 123. |
| SELECT docs.id, docs.message AS msg Documentação do FROM WHERE docs.id="X998_Y998" |
__.chain() .filter(function(doc) { retornar doc.id ==="X998_Y998"; }) .map(function(doc) { return { id: doc.id, msg: doc.message }; }) .value(); |
Consulta documentos com um predicado, id = "X998_Y998" e projeta a ID e a mensagem (com o alias msg). |
| Tag SELECT VALUE Documentação do FROM JOIN tag IN docs.Tags ORDER BY docs._ts |
__.chain() .filter(function(doc) { return doc.Tags && Array.isArray(doc.Tags); }) .sortBy(function(doc) { retorne doc._ts; }) .pluck("Tags") .flatten() .value() |
Filtra documentos que têm a propriedade de matriz Tags, classifica os documentos resultantes pela propriedade do sistema do carimbo de data/hora _ts e projeta e mescla a matriz Tags. |
Próximas etapas
Saiba mais sobre conceitos e como escrever e usar procedimentos armazenados, gatilhos e funções definidas pelo usuário no Azure Cosmos DB:
- Como gravar procedimentos armazenados e gatilhos usando a API de Consulta JavaScript
- Trabalhando com procedimentos armazenados do Azure Cosmos DB, gatilhos e funções definidas pelo usuário
- Como usar procedimentos armazenados, gatilhos, funções definidas pelo usuário no Azure Cosmos DB
- Referência da API do servidor JavaScript do Azure Cosmos DB
- JavaScript ES6 (ECMA 2015)