Palavras-chave no Azure Cosmos DB para NoSQL
APLICA-SE A: NoSQL
A linguagem de consulta do Azure Cosmos DB para NoSQL inclui um conjunto de palavras-chave reservadas que são usadas em consultas para funcionalidade estendida.
BETWEEN
A BETWEEN
palavra-chave é avaliada como um booleano indicando se o valor de destino está entre dois valores especificados, inclusive.
Você pode usar a BETWEEN
palavra-chave com uma WHERE
cláusula para expressar consultas que filtram os resultados em relação a intervalos de cadeia de caracteres ou valores numéricos. Por exemplo, a consulta a seguir retorna todos os itens em que o preço está entre 17.25
e 25.50
, novamente inclusive.
SELECT VALUE
p.price
FROM
products p
WHERE
p.price BETWEEN 17.25 AND 25.50
[
20
]
Você também pode usar a BETWEEN
palavra-chave na SELECT
cláusula, como no exemplo a seguir.
SELECT
(p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
p.price
FROM
products p
[
{
"booleanLessThanTen": false,
"price": 20.0
},
{
"booleanLessThanTen": true,
"price": 7.5
}
]
Nota
Na API para NoSQL, ao contrário do ANSI SQL, você pode expressar consultas de intervalo em propriedades de tipos mistos. Por exemplo, price
pode ser um número como 5.0
em alguns itens e uma cadeia de caracteres como fifteenDollars
em outros. Nesses casos, como é em JavaScript, a comparação entre os dois tipos diferentes resulta em undefined
, então o item é ignorado.
DISTINTOS
A DISTINCT
palavra-chave elimina duplicatas nos resultados de consulta projetados.
Neste exemplo, a consulta projeta valores para cada categoria de produto. Se duas categorias forem equivalentes, apenas uma única ocorrência retornará nos resultados.
SELECT DISTINCT VALUE
p.category
FROM
products p
[
"Accessories",
"Tools"
]
Você também pode projetar valores mesmo que o campo de destino não exista. Nesse caso, o campo não existe em um dos itens, portanto, a consulta retorna um objeto vazio para esse valor exclusivo específico.
SELECT DISTINCT
p.category
FROM
products p
Os resultados são:
[
{},
{
"category": "Accessories"
},
{
"category": "Tools"
}
]
GOSTAR
Retorna um valor booleano dependendo se uma cadeia de caracteres específica corresponde a um padrão especificado. Um padrão pode incluir caracteres regulares e caracteres curinga.
Gorjeta
Você pode escrever consultas logicamente equivalentes usando a LIKE
palavra-chave ou a RegexMatch
função do sistema. Você observará a mesma utilização do índice, independentemente da opção escolhida. A escolha de qual opção usar é amplamente baseada na preferência de sintaxe.
Nota
Como LIKE
é possível utilizar um índice, você deve criar um índice de intervalo para as propriedades que está comparando usando o LIKE
.
Você pode usar os seguintes caracteres curinga com LIKE:
Description | Exemplo | |
---|---|---|
% |
Qualquer cadeia de caracteres de zero ou mais caracteres. | WHERE c.description LIKE "%SO%PS%" |
_ (sublinhado) |
Qualquer personagem. | WHERE c.description LIKE"%SO_PS%" |
[ ] |
Qualquer caractere único dentro do intervalo especificado ([a-f] ) ou conjunto ([abcdef] ). |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
Qualquer caractere único que não esteja dentro do intervalo especificado ([^a-f] ) ou definido ([^abcdef] ). |
WHERE c.description LIKE "%SO[^abc]PS%" |
O %
caractere corresponde a qualquer cadeia de caracteres de zero ou mais. Por exemplo, colocando um %
no início e no final do padrão, a consulta a seguir retorna todos os itens em que o campo especificado contém a frase como uma substring:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%driver%"
Se você usasse apenas um %
caractere no final do padrão, só retornaria itens com uma descrição que começasse com fruit
:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%glove"
Da mesma forma, o curinga no início do padrão indica que você deseja corresponder valores com o valor especificado como um prefixo:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "Road%"
A NOT
palavra-chave inverte o resultado da avaliação da expressão da LIKE
palavra-chave. Este exemplo retorna todos os itens que não correspondem à LIKE
expressão.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name NOT LIKE "%winter%"
Você pode pesquisar padrões que incluam um ou mais caracteres curinga usando a ESCAPE
cláusula. Por exemplo, se você quisesse pesquisar descrições que contivessem a cadeia de caracteres 20%
, não gostaria de interpretar o como um caractere curinga %
. Este exemplo interpreta o ^
como o caractere de escape para que você possa escapar de uma instância específica de %
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.description LIKE "%20^%%" ESCAPE "^"
Você pode colocar caracteres curinga entre colchetes para tratá-los como caracteres literais. Quando você coloca um caractere curinga entre colchetes, remove todos os atributos especiais. Esta tabela inclui exemplos de caracteres literais.
Valor analisado | |
---|---|
LIKE "20-30[%]" |
20-30% |
LIKE "[_]n" |
_n |
LIKE "[ [ ]" |
[ |
LIKE "]" |
] |
IN
Use a IN
palavra-chave para verificar se um valor especificado corresponde a qualquer valor em uma lista. Por exemplo, a consulta a seguir retorna todos os itens em que a categoria corresponde a pelo menos um dos valores em uma lista.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
Gorjeta
Se incluir a sua chave de partição no filtro, a IN
sua consulta filtrará automaticamente apenas para as partições relevantes.
INÍCIO
A TOP
palavra-chave retorna o primeiro N
número de resultados da consulta em uma ordem indefinida. Como prática recomendada, use TOP
com a cláusula para limitar os ORDER BY
resultados ao primeiro N
número de valores ordenados. A combinação dessas duas cláusulas é a única maneira de indicar previsivelmente quais linhas TOP
afetam.
Você pode usar TOP
com um valor constante, como no exemplo a seguir, ou com um valor variável usando consultas parametrizadas.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC