📜  DocumentDB SQL-标量表达式

📅  最后修改于: 2020-11-28 13:37:43             🧑  作者: Mango


在DocumentDB SQL中,SELECT子句还支持标量表达式,例如常量,算术表达式,逻辑表达式等。通常,标量查询很少使用,因为它们实际上并不查询集合中的文档,它们只是对表达式求值。但是,使用标量表达式查询来学习基础知识,如何在查询中使用表达式和成形JSON仍然很有帮助,并且这些概念直接适用于将针对集合中的文档运行的实际查询。

让我们看一个包含多个标量查询的示例。

标量查询

在查询资源管理器中,仅选择要执行的文本,然后单击“运行”。让我们运行第一个。

SELECT "Hello"

执行上述查询后,将产生以下输出。

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

此输出可能看起来有些混乱,所以让我们对其进行分解。

  • 首先,正如我们在上一个演示中所看到的那样,查询结果始终包含在方括号中,因为它们以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

执行上述查询后,将产生以下输出。

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