Partilhar via


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