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 utilizadas em consultas para funcionalidades expandidas.

BETWEEN

A BETWEEN palavra-chave é avaliada como um valor booleano que indica se o valor de destino está entre dois valores especificados, inclusive.

Pode utilizar a BETWEEN palavra-chave com uma WHERE cláusula para expressar consultas que filtram resultados em intervalos de cadeia ou valores numéricos. Por exemplo, a consulta seguinte devolve todos os itens em que o preço é 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
]

Também pode utilizar a BETWEEN palavra-chave na SELECT cláusula, como no exemplo seguinte.

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, pode expressar consultas de intervalo em relação a propriedades de tipos mistos. Por exemplo, price pode ser um número como 5.0 em alguns itens e uma cadeia como fifteenDollars noutros. Nestes casos, tal como no JavaScript, a comparação entre os dois tipos diferentes resulta em undefined, pelo que o item é ignorado.

DISTINCT

A DISTINCT palavra-chave elimina duplicados nos resultados da consulta projetada.

Neste exemplo, a consulta projeta valores para cada categoria de produto. Se duas categorias forem equivalentes, apenas uma única ocorrência devolve nos resultados.

SELECT DISTINCT VALUE
    p.category
FROM
    products p
[
  "Accessories",
  "Tools"
]

Também pode projetar valores mesmo que o campo de destino não exista. Neste caso, o campo não existe num dos itens, pelo que a consulta devolve um objeto vazio para esse valor exclusivo específico.

SELECT DISTINCT
    p.category
FROM
    products p

Os resultados são:

[
  {},
  {
    "category": "Accessories"
  },
  {
    "category": "Tools"
  }
]

LIKE

Devolve um valor booleano consoante uma cadeia de carateres específica corresponda a um padrão especificado. Um padrão pode incluir carateres universais e carateres universais normais.

Dica

Pode escrever consultas logicamente equivalentes com a LIKE palavra-chave ou a função do RegexMatch sistema. Irá observar a mesma utilização do índice, independentemente da opção que escolher. A escolha da opção a utilizar baseia-se, em grande parte, na preferência de sintaxe.

Nota

Uma LIKE vez que pode utilizar um índice, deve criar um índice de intervalo para as propriedades que está a comparar com LIKE.

Pode utilizar os seguintes carateres universais com LIKE:

Descrição Exemplo
% Qualquer cadeia de carateres de zero ou mais carateres. WHERE c.description LIKE "%SO%PS%"
_(caráter de sublinhado) Qualquer caráter individual. WHERE c.description LIKE"%SO_PS%"
[ ] Qualquer caráter único dentro do intervalo especificado ([a-f]) ou conjunto ([abcdef]). WHERE c.description LIKE "%SO[t-z]PS%"
[^] Qualquer caráter individual não dentro do intervalo especificado ([^a-f]) ou definido ([^abcdef]). WHERE c.description LIKE "%SO[^abc]PS%"

O % caráter corresponde a qualquer cadeia de zero ou mais carateres. Por exemplo, ao colocar um % no início e no fim do padrão, a consulta seguinte devolve todos os itens em que o campo especificado contém a expressão como subcadeia:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "%driver%"

Se utilizasse apenas um % caráter no final do padrão, só devolveria 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 caráter universal no início do padrão indica que pretende corresponder valores com o valor especificado como prefixo:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "Road%"

A NOT palavra-chave inversa o resultado da LIKE avaliação da expressão da palavra-chave. Este exemplo devolve todos os itens que não correspondem à LIKE expressão.

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name NOT LIKE "%winter%"

Pode procurar padrões que incluam um ou mais carateres universais com a ESCAPE cláusula . Por exemplo, se quisesse procurar descrições que contivessem a cadeia de carateres 20%, não iria querer interpretar o % como um caráter universal. Este exemplo interpreta o como o ^ caráter de escape para que possa escapar a uma instância específica de %.

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.description LIKE "%20^%%" ESCAPE "^"

Pode incluir carateres universais entre parênteses para tratá-los como carateres literais. Quando coloca um caráter universal entre parênteses retos, remove quaisquer atributos especiais. Esta tabela inclui exemplos de carateres literais.

Valor analisado
LIKE "20-30[%]" 20-30%
LIKE "[_]n" _n
LIKE "[ [ ]" [
LIKE "]" ]

IN

Utilize a IN palavra-chave para verificar se um valor especificado corresponde a qualquer valor numa lista. Por exemplo, a consulta seguinte devolve todos os itens em que a categoria corresponde a, pelo menos, um dos valores numa lista.

SELECT
    *
FROM
    products p
WHERE
    p.category IN ("Accessories", "Clothing")

Dica

Se incluir a chave de partição no filtro, a IN consulta filtrará automaticamente apenas as partições relevantes.

SUPERIOR

A TOP palavra-chave devolve o primeiro N número de resultados da consulta numa ordem indefinida. Como melhor prática, utilize TOP com a cláusula para limitar os ORDER BY resultados ao primeiro N número de valores ordenados. Combinar estas duas cláusulas é a única forma de indicar previsivelmente quais as linhas TOP que afetam.

Pode utilizar TOP com um valor constante, como no exemplo seguinte, ou com um valor variável através de consultas parametrizadas.

SELECT TOP 10
    *
FROM
    products p
ORDER BY
    p.price ASC