Учебники

DocumentDB SQL — Скалярные выражения

В DocumentDB SQL предложение SELECT также поддерживает скалярные выражения, такие как константы, арифметические выражения, логические выражения и т. Д. Обычно скалярные запросы используются редко, потому что на самом деле они не запрашивают документы в коллекции, они просто оценивают выражения. Но все же полезно использовать запросы скалярных выражений, чтобы изучить основы, как использовать выражения и формировать JSON в запросе, и эти концепции применяются непосредственно к фактическим запросам, которые вы будете выполнять для документов в коллекции.

Давайте посмотрим на пример, который содержит несколько скалярных запросов.

Скалярные Запросы

В Query Explorer выберите только текст для выполнения и нажмите «Выполнить». Давайте запустим этот первый.

SELECT "Hello"

Когда вышеуказанный запрос выполняется, он производит следующий вывод.

[ 
   { 
      "$1": "Hello" 
   } 
]

Этот вывод может выглядеть немного запутанным, поэтому давайте разберем его.

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

  • У нас есть массив с одним документом, и этот документ имеет единственное свойство для одного выражения в инструкции SELECT.

  • Оператор SELECT не предоставляет имя для этого свойства, поэтому DocumentDB автоматически генерирует его, используя $ 1.

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

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

У нас есть массив с одним документом, и этот документ имеет единственное свойство для одного выражения в инструкции SELECT.

Оператор SELECT не предоставляет имя для этого свойства, поэтому DocumentDB автоматически генерирует его, используя $ 1.

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

SELECT "Hello" AS word

Когда вышеуказанный запрос выполняется, он производит следующий вывод.

[ 
   { 
      "word": "Hello" 
   } 
]

Аналогично, следующий простой запрос.

SELECT ((2 + 11 % 7)-2)/3

Запрос извлекает следующий вывод.

[ 
   { 
      "$1": 1.3333333333333333 
   } 
]

Давайте посмотрим на другой пример формирования вложенных массивов и вложенных объектов.

SELECT 
   { 
      "words1": 
         ["Hello", "World"], 
      "words2": 
         ["How", "Are", "You?"] 
   } AS allWords

Когда вышеуказанный запрос выполняется, он производит следующий вывод.