USE

USE 子句用于确定查询或查询的一部分是在哪个图上执行的。它支持查询和模式命令。

语法

USE <graph reference>
<other clauses>

可以通过以下方式描述图引用:

  • 直接图引用:USE db1

  • 图函数 graph.byElementId(),用于访问包含给定元素的图:USE graph.byElementId(<element-id-string>)

当连接到复合数据库时,还可以通过以下方式传递图引用:

  • 图函数 graph.byName(),允许动态解析图引用:USE graph.byName(<string-expression>)

关于何时以及如何对图引用进行引用和/或转义的详细说明,请见此处

连接到标准数据库或系统数据库时的 USE 子句

所有数据库和别名都是有效的图引用目标,但复合数据库及其组成部分以及分片属性数据库的图和属性分片除外。除非连接到复合数据库,否则不允许指定多个数据库。

USE 子句的位置

当连接到非复合数据库时,USE 子句只能作为模式命令的前缀,或作为查询的第一个子句出现。只要它们指向同一个数据库,就可以有多个 USE 子句。

连接到复合数据库时的 USE 子句

针对复合数据库执行查询时,USE 子句必须仅引用作为当前复合数据库一部分的图。在连接到复合数据库时,可以通过 RETURN graph.names()SHOW DATABASES YIELD name, constituents RETURN * 列出这些组成部分。

USE 子句的位置

在针对复合数据库运行查询时,USE 子句可以作为以下内容的第一个子句出现:

  • 查询(类似于连接到非复合数据库时的用法)。

  • UNION 部分

    USE <graph>
    <other clauses>
      UNION
    USE <graph>
    <other clauses>
  • 子查询

    CALL () {
      USE <graph>
      <other clauses>
    }

    在子查询中,USE 子句可以直接出现在变量作用域子句之后:CALL () { …​ }

示例

查询图

此示例假设 DBMS 包含一个名为 myDatabase 的数据库

查询
USE myDatabase
MATCH (n) RETURN n

查询复合数据库的组成图

在此示例中,假设 DBMS 包含一个名为 myComposite 的复合数据库,其中包含一个名为 myConstituent 的别名

查询
USE myComposite.myConstituent
MATCH (n) RETURN n

动态查询复合数据库的组成图

graph.byName() 函数可在 USE 子句中使用,通过包含组成部分限定名称的 STRING 值来解析组成图。

此示例使用了一个名为 myComposite 的复合数据库,其中包含一个名为 myConstituent 的别名

查询
USE graph.byName('myComposite.myConstituent')
MATCH (n) RETURN n

参数可以是任何计算结果为组成图名称的表达式——例如参数

查询
USE graph.byName($graphName)
MATCH (n) RETURN n

使用 elementId 查询复合数据库的组成部分

graph.byElementId() 函数可在 USE 子句中使用,用于解析给定 element id 所属的组成图。

在下面的示例中,假设 DBMS 包含对应于给定元素 ID 的数据库。如果您连接到复合数据库,它需要是一个指向组成数据库(即 DBMS 中的标准数据库)的元素 ID。

查询
USE graph.byElementId("4:c0a65d96-4993-4b0c-b036-e7ebd9174905:0")
MATCH (n) RETURN n
© . This site is unofficial and not affiliated with Neo4j, Inc.