Documentdb Sql 简明教程

DocumentDB SQL - Scalar Expressions

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

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

scalar queries

在查询浏览器中,只选择要执行的文本并单击“运行”。我们先运行第一个。

SELECT "Hello"

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

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

此输出可能看起来有些令人困惑,因此我们来将其分解一下。

  1. 首先,正如我们在上一个演示中看到的,查询结果始终包含在方括号中,因为它们作为 JSON 数组返回,甚至像此查询那样的标量表达式查询也只返回一个文档。

  2. 我们有一个包含一个文档的数组,该文档中有一个属性以用于 SELECT 语句中的单个表达式。

  3. SELECT 语句未为此属性提供名称,因此 DocumentDB 使用 $1 自动生成一个名称。

  4. 这通常不是我们想要的,这就是为什么我们可以在查询中使用 AS 为表达式设置别名,这会将生成的文档中的属性名称设置为所需的方式,本示例中为 word。

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?"
         ]
      }
   }
]