列出数据库

您可以使用 Cypher 命令 SHOW DATABASES 列出您的数据库。

语法

命令 语法

SHOW DATABASE

SHOW { DATABASE[S] name | DATABASE[S] | DEFAULT DATABASE | HOME DATABASE }
[WHERE expression]
SHOW { DATABASE[S] name | DATABASE[S] | DEFAULT DATABASE | HOME DATABASE }
YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

SHOW DATABASES 输出

根据您想要查看的内容,您可以列出:

  • 所有数据库。

  • 特定数据库。

  • DBMS 默认数据库。

  • 主(Home)数据库。

这些命令返回以下列:

表 1. 列出数据库的输出
描述 类型 默认输出

名称 (name)

数据库名称。

STRING

type

数据库类型:system(系统)、standard(标准)、graph shard(图分片)、property shard(属性分片)或 composite(复合)。

STRING

别名 (aliases)

数据库可能拥有的任何别名名称。

LIST<STRING>

access(访问)

数据库访问模式,即 read-write(读写)或 read-only(只读)。当使用 ALTER DATABASE …​ SET ACCESS READ ONLY 时,数据库可能被描述为 read-only

STRING

databaseID

数据库的唯一 ID。

仅适用于 online(在线)或 deallocating(正在释放)的数据库。对于其他数据库状态,该值将为 NULL

STRING

serverID

服务器 ID。

STRING

address

集群 DBMS 中的服务器地址。独立服务器的默认值为 neo4j://:7687

STRING

role(角色)

数据库的当前角色(primary 主、secondary 从、property shard replica 属性分片副本、unknown 未知)。

不适用于复合数据库(值为 NULL)。

STRING

写入者 (writer)

如果是该数据库接受写入的副本,则为 true(此副本是集群中该数据库的领导者,或者是独立服务器)。

布尔值 (BOOLEAN)

requestedStatus

数据库的预期状态。有效值为 onlineoffline

STRING

currentStatus

数据库的实际状态。

可能的状态有:

  • online(在线)

  • offline(离线)

  • starting(正在启动)

  • stopping(正在停止)

  • store copying(正在复制存储)

  • initial

  • deallocating(正在释放)

  • dirty(脏数据/异常)

  • 已隔离 (quarantined)

  • unknown(未知)

  • mixed(混合)

详情请参阅 数据库状态

STRING

状态消息 (statusMessage)

解释数据库状态的消息,通常解释为什么它不在正确状态。

STRING

默认

如果是 DBMS 的默认数据库,则为 trueSHOW HOME DATABASESHOW DEFAULT DATABASE 不会返回此列。

布尔值 (BOOLEAN)

home

如果是当前用户的主数据库,则为 trueSHOW HOME DATABASESHOW DEFAULT DATABASE 不会返回此列。

布尔值 (BOOLEAN)

currentPrimariesCount

当前报告为运行中的该数据库的主节点数量。它等同于 role=primaryname=此数据库 的行数。

不适用于复合数据库[1]、虚拟分片数据库和属性分片。(值为 NULL)。

INTEGER(整数)

currentSecondariesCount

当前报告为运行中的该数据库的从节点数量。它等同于 role=secondaryname=此数据库 的行数。

不适用于复合数据库[1]、虚拟分片数据库和属性分片(值为 NULL)。

INTEGER(整数)

currentPropertyShardReplicas

引入于 2025.12企业版 当前报告为运行中的该数据库的属性分片副本数量。它等同于 role=property shard replicaname=此数据库 的行数。

INTEGER(整数)

requestedPrimariesCount

该数据库请求的主节点数量。如果 DBMS 当前正在减少数据库副本数量,则该值可能低于当前值;如果正在增加副本数量,则可能高于当前值。

不适用于复合数据库[1]、虚拟分片数据库和属性分片(值为 NULL)。]

INTEGER(整数)

requestedSecondariesCount

该数据库请求的从节点数量。如果 DBMS 当前正在减少数据库副本数量,则该值可能低于当前值;如果正在增加副本数量,则可能高于当前值。

不适用于复合数据库[1]、虚拟分片数据库和属性分片(值为 NULL)。]

INTEGER(整数)

requestedPropertyShardReplicas

引入于 2025.12企业版 该数据库请求的属性分片副本数量。如果 DBMS 当前正在减少数据库副本数量,则该值可能低于当前值;如果正在增加副本数量,则可能高于当前值。

INTEGER(整数)

creationTime

数据库创建的日期和时间。

ZONED DATETIME

lastStartTime

数据库上次启动的日期和时间。

ZONED DATETIME

lastStopTime

数据库上次停止的日期和时间。

ZONED DATETIME

store

关于存储引擎和存储格式的信息。

该值为格式为 {存储引擎}-{存储格式}-{主版本}.{次版本} 的字符串。

仅适用于 online(在线)或 deallocating(正在释放)的数据库。对于其他数据库状态,该值将为 NULL

不适用于复合数据库[1] 和虚拟分片数据库(值为 NULL)。

STRING

lastCommittedTxn§

最后接收到的事务 ID。

仅适用于 online(在线)或 deallocating(正在释放)的数据库。对于其他数据库状态,该值将为 NULL

不适用于复合数据库[1] 和虚拟分片数据库(值为 NULL)。

INTEGER(整数)

replicationLag

当前数据库与该数据库最新分配副本相比滞后的事务数。滞后以负整数表示。在独立环境中,该值始终为 0

仅适用于 online(在线)或 deallocating(正在释放)的数据库。对于其他数据库状态,该值将为 NULL

不适用于复合数据库[1] 和属性分片数据库(值为 NULL)。

INTEGER(整数)

shardTxnLag

引入于 2025.12企业版 当前分片与分片数据库中最新的分片分配相比滞后的事务数。滞后以负整数表示。

INTEGER(整数)

constituents

数据库可能拥有的任何组成部分(constituent)的名称。仅适用于复合数据库。

LIST<STRING>

graphShards

引入于 2025.12企业版 数据库可能拥有的任何图分片名称。也适用于标准数据库(非分片数据库),它们拥有一个与数据库同名的图分片。不适用于复合数据库。

LIST<STRING>

propertyShards

引入于 2025.12企业版 数据库可能拥有的任何属性分片名称。

LIST<STRING>

defaultLanguage

引入于 Neo4j 2025.06 此数据库的默认 Cypher 版本。未加 Cypher 版本前缀的查询将使用该数据库的 Cypher 版本执行。

STRING

选项 (options)

应用于数据库的选项映射。

不适用于复合数据库(值为 NULL)。

MAP

1. 复合数据库的更改适用于 2025.04 及更高版本以及 5.26.5 及更高版本。

SHOW DATABASES 命令的结果根据用户的 ACCESS 权限进行过滤。然而,某些权限使用户能够查看额外的数据库,而无需考虑他们的 ACCESS 权限:

  • 拥有 CREATE/DROP/ALTER DATABASESET DATABASE ACCESS 权限的用户可以查看所有标准数据库。

  • 拥有 CREATE/DROP/ALTER COMPOSITE DATABASECOMPOSITE DATABASE MANAGEMENT 权限的用户可以查看所有复合数据库。

  • 拥有 DATABASE MANAGEMENT 权限的用户可以查看所有数据库。

SET DATABASE DEFAULT LANGUAGE 权限被特意排除,不会影响返回的数据库。

如果用户未被授予任何数据库的 ACCESS 权限,也没有上述特殊情况,该命令仍可执行,但只会返回始终可见的 system 数据库。

数据库状态

数据库的 currentStatus 可以是以下状态之一:

状态 描述

online(在线)

数据库正在运行。

offline(离线)

数据库未运行。如果 statusMessage 列已填充,则数据库因问题而未运行。

starting(正在启动)

数据库未运行,但即将启动。

stopping(正在停止)

数据库不再运行,但尚未完全停止。此时还不能执行离线操作(例如 load/dump)。

store copying(正在复制存储)

数据库当前正在从另一个 Neo4j 实例进行更新。

initial

数据库尚未创建。

deallocating(正在释放)

仅适用于集群中的数据库。数据库仍在线,但由于其在集群中的角色转移到另一个成员,最终将离线。该状态保持为 deallocating 直到转移完成,这可能需要一秒钟到一天或更长时间。

dirty(脏数据/异常)

此状态意味着发生了错误。数据库的底层存储文件可能已损坏。有关详细信息,请咨询 statusMessage 列或服务器日志。

已隔离 (quarantined)

数据库已彻底停止,其状态在解除隔离之前无法更改。有关详细信息,请咨询 statusMessage 列或服务器日志。

unknown(未知)

此 Neo4j 实例不知道该数据库的状态。

mixed(混合)

如果数据库是分片数据库,此状态表示并非所有分片都具有相同的 currentStatusstatusMessage 列显示有多少分片处于特定状态,例如 online (4), starting (1)。

请注意,对于失败的数据库,currentStatusrequestedStatus 是不同的。这通常意味着错误,但并非总是如此。例如,由于正在执行恢复,数据库可能需要一段时间才能从 offline 过渡到 online。或者,在正常操作期间,由于必要的操作过程(如一个 Neo4j 实例从另一个实例复制存储文件),数据库的 currentStatus 可能会暂时与其 requestedStatus 不同。

显示所有可用数据库

可以使用命令 SHOW DATABASES 显示所有可用数据库的摘要。

查询
SHOW DATABASES
结果
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name     | type       | aliases                      | access       | address          | role      | writer | requestedStatus | currentStatus | statusMessage | default | home  | constituents |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "movies" | "standard" | ["films", "motion pictures"] | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | FALSE   | FALSE | []           |
| "neo4j"  | "standard" | []                           | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | TRUE    | TRUE  | []           |
| "system" | "system"   | []                           | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | FALSE   | FALSE | []           |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

托管在离线服务器上的数据库也会由 SHOW DATABASES 命令返回。对于此类数据库,address 列显示 NULLcurrentStatus 列显示 unknown,且 statusMessage 显示 Server is unavailable

显示特定数据库的详细信息

在此示例中,可以使用命令 SHOW DATABASE name YIELD * 显示特定数据库的详细信息。当提供 YIELD 子句时,将返回完整的列集。

查询
SHOW DATABASE movies YIELD *
结果
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name     | type       | aliases                      | access       | databaseID                                                         | serverID                               | address          | role      | writer | requestedStatus | currentStatus | statusMessage | default | home  | currentPrimariesCount | currentSecondariesCount | requestedPrimariesCount | requestedSecondariesCount | creationTime             | lastStartTime            | lastStopTime | store                | lastCommittedTxn | replicationLag | constituents | defaultLanguage | options |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "movies" | "standard" | ["films", "motion pictures"] | "read-write" | "C066801F54B44EA1520F0FE392B4005AABF42D8DD0A5FD09969B955575D287D5" | "e3063985-e2f4-4728-824b-a7d53779667a" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | FALSE   | FALSE | 1                     | 0                       | 1                       | 0                         | 2023-08-14T10:01:29.074Z | 2023-08-14T10:01:29.074Z | NULL         | "record-aligned-1.1" | 3                | 0              | []           | "CYPHER 5"      | {}      |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

显示数据库数量

可以使用 YIELDRETURN 子句中的 count() 函数查看不同数据库的数量。

查询
SHOW DATABASES YIELD name
RETURN count(DISTINCT name) AS count
结果
+-------+
| count |
+-------+
| 3     |
+-------+

通过指定 name 列并按不同名称对结果排序,统计的是不同数据库的数量,而不是集群环境中数据库分配的总数。

显示默认数据库

可以使用命令 SHOW DEFAULT DATABASE 查看默认数据库。

查询
SHOW DEFAULT DATABASE
结果
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| name    | type       | aliases | access       | address          | role      | writer | requestedStatus | currentStatus | statusMessage | constituents |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| "neo4j" | "standard" | []      | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | []           |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

显示主数据库

可以使用命令 SHOW HOME DATABASE 查看当前用户的主数据库。

查询
SHOW HOME DATABASE
结果
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| name    | type       | aliases | access       | address          | role      | writer | requestedStatus | currentStatus | statusMessage | constituents |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| "neo4j" | "standard" | []      | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | []           |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

过滤列出的数据库

还可以通过使用 YIELDORDER BYWHERE 来过滤和排序结果。

查询
SHOW DATABASES YIELD name, currentStatus, requestedStatus
ORDER BY currentStatus
WHERE name CONTAINS 'o'

在此示例中

  • 使用 YIELD 子句减少了返回的列数。

  • 返回列的顺序已更改。

  • 结果使用 ORDER BYcurrentStatus 列排序。

  • 结果已过滤,仅显示名称中包含 'o' 的数据库。

也可以使用 SKIPLIMIT 对结果进行分页。

结果
+--------------------------------------------+
| name     | currentStatus | requestedStatus |
+--------------------------------------------+
| "movies" | "online"      | "online"        |
| "neo4j"  | "online"      | "online"        |
+--------------------------------------------+

显示数据库的默认 Cypher 版本

要查看 DBMS 中每个数据库的默认 Cypher 版本,请使用 YIELD 子句运行 SHOW DATABASES 命令,并指定 defaultLanguage 列。例如

查询
SHOW DATABASES YIELD name, defaultLanguage
表 2. 结果
名称 (name) defaultLanguage

"movies"

"CYPHER 5"

"neo4j"

"CYPHER 25"

"system"

"CYPHER 25"

行:3