Ключевые слова в Azure Cosmos DB для NoSQL

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Язык запросов Azure Cosmos DB для NoSQL включает набор зарезервированных ключевых слов, которые используются в запросах для расширенной функциональности.

BETWEEN

Ключевое слово BETWEEN вычисляется как логическое значение, указывающее, находится ли целевое значение между двумя указанными значениями включительно.

Вы можете использовать BETWEEN ключевое слово с предложением WHERE для выражения запросов, которые фильтруют результаты по диапазонам строковых или числовых значений. Например, следующий запрос возвращает все элементы, в которых цена находится в диапазоне от 17.25 и 25.50, снова включительно.

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

Можно также использовать ключевое слово BETWEEN в предложении SELECT, как показано в следующем примере.

SELECT 
    (p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
    p.price
FROM
    products p
[
  {
    "booleanLessThanTen": false,
    "price": 20.0
  },
  {
    "booleanLessThanTen": true,
    "price": 7.5
  }
]

Примечание

В API для NoSQL, в отличие от ANSI SQL, можно выражать запросы диапазона к свойствам смешанных типов. Например, price может быть числом (5.0) для некоторых элементов или строкой (fifteenDollars) для других. В этих случаях, как и в JavaScript, сравнение между двумя различными типами приводит к undefined, поэтому элемент пропускается.

DISTINCT

Ключевое слово DISTINCT исключает дубликаты в прогнозируемых результатах запроса.

В этом примере запрос проектов значений для каждой категории продуктов. Если две категории эквивалентны, в результатах возвращается только одно вхождение.

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

Вы также можете проецируемые значения, даже если целевое поле не существует. В этом случае поле не существует в одном из элементов, поэтому запрос возвращает пустой объект для этого конкретного уникального значения.

SELECT DISTINCT
    p.category
FROM
    products p

Результаты:

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

LIKE

Возвращает логическое значение в зависимости от того, соответствует ли определенная символьная строка указанному шаблону. Шаблон может включать обычные символы и символы-шаблоны.

Совет

Логически эквивалентные запросы можно создавать с помощью LIKE ключевое слово или системной RegexMatch функции. Вы будете наблюдать одно и то же использование индекса независимо от выбранного варианта. Выбор варианта использования в значительной степени основан на предпочтениях синтаксиса.

Примечание

Поскольку LIKE может использовать индекс, необходимо создать индекс диапазона для свойств, сравниваемых с помощью LIKE.

С LIKE можно использовать следующие подстановочные знаки:

Описание Пример
% Любая строка, содержащая ноль или более символов. WHERE c.description LIKE "%SO%PS%"
_(подчеркивание) Любой одиночный символ. WHERE c.description LIKE"%SO_PS%"
[ ] Любой отдельный символ в указанном диапазоне ([a-f]) или наборе ([abcdef]). WHERE c.description LIKE "%SO[t-z]PS%"
[^] Любой отдельный символ, не в пределах заданного диапазона ([^a-f]) или заданного ([^abcdef]). WHERE c.description LIKE "%SO[^abc]PS%"

Символ % соответствует любой строке из нуля или более символов. Например, при размещении % в начале и конце шаблона следующий запрос возвращает все элементы, где указанное поле содержит фразу в качестве подстроки:

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

Если в конце шаблона использовался % только символ, возвращаются только элементы с описанием, начинающимся с fruit:

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

Аналогичным образом, подстановочный знак в начале шаблона указывает, что вы хотите сопоставить значения с указанным значением в качестве префикса:

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

Ключевое слово NOT обратный результат LIKE вычисления выражения ключевое слово. В этом примере возвращаются все элементы, которые не соответствуют выражению LIKE .

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

Вы можете искать шаблоны, включающие один или несколько подстановочных знаков, с помощью ESCAPE предложения . Например, если вы хотите найти описания, содержащие строку 20%, не следует интерпретировать % как подстановочный знак. В этом примере интерпретируется ^ как escape-символ, чтобы можно было экранировать определенный %экземпляр .

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

Подстановочные символы можно заключать в квадратные скобки, чтобы они рассматривались как литеральные символы. При заключении подстановочного символа в скобки удаляются все специальные атрибуты. В этой таблице приведены примеры литеральных символов.

Проанализированное значение
LIKE "20-30[%]" 20-30%
LIKE "[_]n" _n
LIKE "[ [ ]" [
LIKE "]" ]

IN

IN Используйте ключевое слово, чтобы проверка, совпадает ли указанное значение с каким-либо значением в списке. Например, следующий запрос возвращает все элементы, в которых категория соответствует хотя бы одному из значений в списке.

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

Совет

Если включить ключ секции в фильтр IN, запрос будет автоматически фильтровать только соответствующие секции.

В начало

Ключевое слово TOP возвращает первое N число результатов запроса в неопределенном порядке. Рекомендуется использовать TOP с предложением ORDER BY , чтобы ограничить результаты первым N числом упорядоченных значений. Объединение этих двух предложений — единственный способ прогнозировать влияние строк TOP .

Можно использовать TOP с константным значением, как показано в следующем примере, или с переменным значением с помощью параметризованных запросов.

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