Compartir a través de


Palabras clave en Azure Cosmos DB for NoSQL

SE APLICA A: NoSQL

El lenguaje de consulta de Azure Cosmos DB for NoSQL incluye un conjunto de palabras clave reservadas que se usan en consultas para la funcionalidad extendida.

BETWEEN

La palabra clave BETWEEN se evalúa como un valor booleano que indica si el valor de destino está entre dos valores especificados, ambos incluidos.

Puede usar la BETWEENpalabra clave con una WHERE cláusula para expresar consultas que filtren los resultados contra rangos de valores de cadena o numéricos. Por ejemplo, la siguiente consulta devuelve todos los elementos cuyo precio esté comprendido entre 17.25 y 25.50, ambos inclusive.

SELECT VALUE
    p.price
FROM
    products p
WHERE
    p.price BETWEEN 17.25 AND 25.50
[
  20
]

También puede usar la palabra clave BETWEEN en la cláusula SELECT, como en el ejemplo siguiente.

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:

En la API para NoSQL, a diferencia de SQL ANSI, puede expresar consultas en intervalos en propiedades de tipos combinados. Por ejemplo, price podría ser un número como 5.0 en algunos elementos y una cadena como fifteenDollars en otros. En estos casos, como ocurre en JavaScript, la comparación entre los dos tipos diferentes da como resultado undefined, por lo que el elemento es omitido.

DISTINCT

La palabra clave DISTINCT elimina duplicados en los resultados de la consulta proyectada.

En este ejemplo, la consulta proyecta valores para cada categoría de producto. Si dos categorías son equivalentes, solo se devuelve una sola repetición en los resultados.

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

También puede proyectar valores incluso si el campo de destino no existe. En este caso, el campo no existe en uno de los elementos, por lo que la consulta devuelve un objeto vacío para ese valor único específico.

SELECT DISTINCT
    p.category
FROM
    products p

Los resultados son:

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

LIKE

Devuelve un valor booleano en función de si una cadena de caracteres específica coincide con un patrón especificado. Un patrón puede contener caracteres normales y caracteres comodín.

Sugerencia

Puede escribir consultas equivalentes de forma lógica mediante la palabra clave LIKE o la función del sistema RegexMatch. Observará la misma utilización del índice independientemente de la opción que elija. La elección de una u otra opción dependerá en gran medida de las preferencias de sintaxis.

Nota:

Dado que LIKE puede utilizar un índice, debe crear un índice de intervalo para las propiedades que se van a comparar con LIKE.

Puede usar los siguientes caracteres comodín con LIKE:

Descripción Ejemplo
% Cualquier cadena de cero o más caracteres. WHERE c.description LIKE "%SO%PS%"
_(subrayado) Cualquier carácter individual. WHERE c.description LIKE"%SO_PS%"
[ ] Cualquier carácter que se encuentre dentro del rango ([a-f]) o conjunto ([abcdef]). WHERE c.description LIKE "%SO[t-z]PS%"
[^] Cualquier carácter que no esté dentro del rango ([^a-f] ) o conjunto ([^abcdef]) especificados. WHERE c.description LIKE "%SO[^abc]PS%"

El carácter % coincide con cualquier cadena de cero o más caracteres. Por ejemplo, al colocar un % al principio y al final del patrón, la consulta siguiente devuelve todos los elementos en los que el campo especificado contiene la frase como una substring:

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

Si solo ha usado un carácter % al principio del patrón, solo se devolverán los elementos con una descripción que empiece con fruit:

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

Del mismo modo, el carácter comodín al principio del patrón indica que desea hacer coincidir los valores con el valor especificado como prefijo:

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

La palabra clave NOT inversa el resultado de la evaluación de la expresión de la palabra clave LIKE. En este ejemplo se devuelven todos los elementos que no coinciden con la expresión LIKE.

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

Puede buscar patrones que incluyan uno o varios caracteres comodín mediante la cláusulaESCAPE. Por ejemplo, si quiere buscar descripciones que contengan la cadena 20%, no debe interpretar el valor % como un carácter comodín. En este ejemplo se interpreta ^ como carácter de escape para que pueda escapar una instancia específica de %.

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

Puede incluir caracteres comodín entre corchetes para tratarlos como caracteres literales. Cuando se escribe un carácter comodín entre corchetes, se quitan los atributos especiales. En esta tabla se incluyen ejemplos de caracteres literales.

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

IN

Use la palabra clave IN para comprobar si un valor especificado coincide con algún valor de una lista. Por ejemplo, la consulta siguiente devuelve todos los elementos en los que la categoría coincide al menos con uno de los valores de una lista.

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

Sugerencia

Si incluye la clave de partición en el filtro IN, la consulta se filtrará automáticamente solo por las particiones pertinentes.

TOP

La palabra claveTOP devuelve el primer númeroN de resultados de la consulta en un orden indefinido. Como práctica recomendada, úsela TOPcon laORDER BY cláusula para limitar los resultados al primer Nnúmero de valores ordenados. La combinación de estas dos cláusulas es la única manera de indicar de forma previsible a qué filas TOP afecta.

Puede usar TOP con un valor constante, como se muestra en el siguiente ejemplo, o con un valor variable utilizando consultas parametrizadas.

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