USE

USE 子句决定查询或查询部分针对哪个图执行。它支持查询和模式命令。

语法

USE 子句只能作为模式命令的前缀,或作为查询的第一个子句出现。

USE <graph>
<other clauses>

其中 <graph> 指的是 DBMS 中数据库的名称或别名。

复合数据库语法

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

  • UNION 部分

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

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

    在子查询中,USE 子句可以直接出现在变量作用域子句之后:CALL () { …​ } (在 Neo4j 5.23 中引入)。或者,如果您使用的是旧版 Neo4j,则直接在导入 WITH 子句之后。

当对复合数据库执行查询时,USE 子句只能引用属于当前复合数据库的图。

示例

查询图

此示例假设 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 子句中使用,以解析给定元素 ID 所属的组成图。从 Neo4j 5.26 开始,它支持标准数据库和复合数据库(在以前的版本中,它仅在复合数据库上可用)。

在标准数据库上,包含 graph.byElementId()USE 子句不能与其他 USE 子句组合使用,除非后续的 USE 子句引用相同的元素 ID。

在以下示例中,假设 DBMS 包含与给定元素 ID 对应的数据库。如果您连接到复合数据库,则它需要是指向组成数据库的元素 ID,该组成数据库是 DBMS 中的标准数据库。

查询
USE graph.byElementId("4:c0a65d96-4993-4b0c-b036-e7ebd9174905:0")
MATCH (n) RETURN n