API de consulta do JavaScript no Azure Cosmos DB
APLICA-SE A: NoSQL
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 em 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 JavaScript permite que você crie consultas programaticamente passando funções de predicado para a sequência de chamadas de função, com uma sintaxe semelhante à matriz integrada do ECMAScript5 e bibliotecas JavaScript populares como Lodash. As consultas são analisadas pelo tempo de execução do JavaScript e executadas de forma eficiente usando os índices do Azure Cosmos DB.
Funções JavaScript suportadas
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 e saída no conjunto resultante. Esta 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. Esta função comporta-se de forma semelhante a SelectMany no LINQ. |
map(transformationFunction [, options] [, callback]) |
Aplica uma projeção dada uma função de transformação que mapeia cada item de entrada para um objeto ou valor JavaScript. Esta função se comporta de forma semelhante a uma cláusula SELECT no 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 classificando os documentos no fluxo de documentos de entrada em ordem crescente usando o predicado fornecido. Esta função se comporta de forma semelhante a uma cláusula ORDER BY em 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. Esta função se comporta de forma semelhante a uma cláusula ORDER BY x DESC no SQL. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Executa uma auto-junção com matriz interna e adiciona resultados de ambos os lados como tuplas à projeção de resultados. Por exemplo, juntar um documento de pessoa com person.pets produziria tuplas [pessoa, animal de estimação]. Isso é semelhante ao SelectMany no .NET LINQ. |
Quando incluídas dentro de funções de predicado e/ou seletor, as seguintes construções JavaScript são automaticamente otimizadas para serem executadas diretamente nos índices do Azure Cosmos DB:
- Operadores simples:
=
+
-
*
/
%
|
^
&
==
!=
===
!==
<
>
<=
>=
||
&&
<<
>>
>>>
~
- Literais, incluindo o literal do objeto:
{}
- var, retorno
As seguintes construções JavaScript não são otimizadas para índices do Azure Cosmos DB:
- Fluxo de controlo:
if
for
while
- Chamadas de função
Para obter mais informações, consulte a Documentação JavaScript do lado do servidor do Azure Cosmos DB.
Folha de cheat de SQL para JavaScript
A tabela a seguir apresenta várias consultas SQL e as consultas JavaScript correspondentes. Assim como nas consultas SQL, as propriedades (por exemplo, item.id
) diferenciam maiúsculas de minúsculas.
Nota
__
(double-underscore) é um alias para getContext().getCollection()
ao usar a API de consulta JavaScript.
SQL | API de consulta JavaScript | Descrição |
---|---|---|
SELECIONAR * DE docs |
__.map(function(doc) { doc de retorno; }); |
Resulta em todos os documentos (paginados com token de continuação) como estão. |
SELECIONAR docs.id, docs.message como msg, docs.ações DE docs |
__.map(function(doc) { return { Identificação: doc.id, Msg: doc.message, ações:doc.actions }; }); |
Projeta o id, a mensagem (aliased para msg) e a ação de todos os documentos. |
SELECIONAR * DE docs WHERE docs.id="X998_Y998" |
__.filter(function(doc) { retorno doc.id ==="X998_Y998"; }); |
Consultas de documentos com o predicado: id = "X998_Y998". |
SELECIONAR * DE docs WHERE ARRAY_CONTAINS(Docs. Tags, 123) |
__.filter(function(x) { retornar x.Tags && x.Tags.indexOf(123) > -1; }); |
Consultas para documentos que têm uma propriedade Tags e Tags é uma matriz que contém o valor 123. |
SELECIONAR docs.id, docs.message como msg DE docs WHERE docs.id="X998_Y998" |
__.cadeia() .filter(function(doc) { retorno doc.id ==="X998_Y998"; }) .map(function(doc) { return { Identificação: doc.id, Msg: doc.message }; }) .valor(); |
Consulta documentos com um predicado, id = "X998_Y998" e, em seguida, projeta o id e a mensagem (aliased para msg). |
Tag SELECT VALUE DE docs JOIN tag IN docs. Etiquetas ENCOMENDAR POR docs._ts |
__.cadeia() .filter(function(doc) { devolver doc. Tags && Array.isArray(doc. Tags); }) .sortBy(function(doc) { retorno doc._ts; }) .pluck("Tags") .flatten() .valor() |
Filtra documentos que têm uma propriedade de matriz, Tags, e classifica os documentos resultantes pela propriedade _ts sistema de carimbo de data/hora e, em seguida, projeta + nivela a matriz Tags. |
Próximos passos
Saiba mais conceitos e como escrever e usar procedimentos armazenados, gatilhos e funções definidas pelo usuário no Azure Cosmos DB:
- Como escrever procedimentos armazenados e gatilhos usando a API de consulta JavaScript
- Trabalhando com procedimentos armazenados, gatilhos e funções definidas pelo usuário do Azure Cosmos DB
- Como usar procedimentos armazenados, gatilhos, funções definidas pelo usuário no Azure Cosmos DB
- Referência da API do lado do servidor JavaScript do Azure Cosmos DB
- JavaScript ES6 (ECMA 2015)