DocumentDB SQL - Expressões escalares

No DocumentDB SQL, a cláusula SELECT também oferece suporte a expressões escalares como constantes, expressões aritméticas, expressões lógicas, etc. Normalmente, consultas escalares são raramente usadas, porque na verdade não consultam documentos na coleção, elas apenas avaliam expressões. Mas ainda é útil usar consultas de expressão escalar para aprender o básico, como usar expressões e moldar JSON em uma consulta, e esses conceitos se aplicam diretamente às consultas reais que você executará em documentos em uma coleção.

Vamos dar uma olhada em um exemplo que contém várias consultas escalares.

No Query Explorer, selecione apenas o texto a ser executado e clique em 'Executar'. Vamos ver este primeiro.

SELECT "Hello"

Quando a consulta acima é executada, ela produz a seguinte saída.

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

Esta saída pode parecer um pouco confusa, então vamos analisá-la.

  • Primeiro, como vimos na última demonstração, os resultados da consulta estão sempre entre colchetes porque são retornados como uma matriz JSON, mesmo os resultados de consultas de expressão escalar como esta, que retorna apenas um único documento.

  • Temos uma matriz com um documento, e esse documento possui uma única propriedade para a única expressão na instrução SELECT.

  • A instrução SELECT não fornece um nome para esta propriedade, portanto, DocumentDB gera um automaticamente usando $ 1.

  • Normalmente, não é isso que queremos, por isso podemos usar AS para criar um alias para a expressão na consulta, que define o nome da propriedade no documento gerado da maneira que você gostaria que fosse, palavra, neste exemplo.

SELECT "Hello" AS word

Quando a consulta acima é executada, ela produz a seguinte saída.

[ 
   { 
      "word": "Hello" 
   } 
]

Da mesma forma, a seguir está outra consulta simples.

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

A consulta recupera a seguinte saída.

[ 
   { 
      "$1": 1.3333333333333333 
   } 
]

Vamos dar uma olhada em outro exemplo de modelagem de arrays aninhados e objetos incorporados.

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

Quando a consulta acima é executada, ela produz a seguinte saída.

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