|| 列出数据库 - 操作手册 - Neo4j 文档

列出数据库

您可以使用 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 默认数据库。

  • 主数据库。

这些命令返回以下列

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

name

数据库的名称。 默认输出

字符串

type

数据库的类型:system、standard 或 composite。 默认输出

字符串

aliases

数据库可能具有的任何别名。 默认输出

列表<字符串>

access

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

字符串

databaseID

数据库的唯一 ID。

数据库必须处于 online 或 deallocating 状态此值才可用。对于其他数据库状态,此值为 NULL。

字符串

serverID

服务器实例 ID。

字符串

address

集群 DBMS 中的实例地址。独立数据库的默认值为 neo4j://:7687。 默认输出

字符串

role

数据库的当前角色(primary、secondary、unknown)。 默认输出

复合数据库的值为 NULL,因为它不适用于复合数据库。

字符串

writer

对于接受此数据库写入的实例,为 true(此实例是此数据库在集群中的领导者,或者这是一个独立实例)。 默认输出

布尔值

requestedStatus

数据库的预期状态。值可以是 online 或 offline。 默认输出

字符串

currentStatus

数据库的实际状态。 默认输出

可能的状态有

  • 在线

  • 离线

  • 正在启动

  • 正在停止

  • 存储复制

  • 初始

  • 正在解除分配

  • 脏数据

  • 已隔离

  • 未知

有关更多信息,请参阅数据库状态。

字符串

statusMessage

一条解释数据库状态的消息,通常解释为什么它没有处于正确状态。 默认输出

字符串

default

如果这是 DBMS 的默认数据库,则为 true。 默认输出 不通过 SHOW HOME DATABASE 或 SHOW DEFAULT DATABASE 返回。

布尔值

home

如果这是当前用户的主数据库,则为 true。 默认输出 不通过 SHOW HOME DATABASE 或 SHOW DEFAULT DATABASE 返回。

布尔值

currentPrimariesCount

报告当前运行的此数据库的主节点数量。这与 role=primary 且 name=此数据库 的行数相同。

复合数据库的值为 NULL,因为它不适用于复合数据库。[1]

整数

currentSecondariesCount

报告当前运行的此数据库的副本数量。这与 role=secondary 且 name=此数据库 的行数相同。

复合数据库的值为 NULL,因为它不适用于复合数据库。[1]

整数

requestedPrimariesCount

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

复合数据库的值为 NULL,因为它不适用于复合数据库。

整数

requestedSecondariesCount

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

复合数据库的值为 NULL,因为它不适用于复合数据库。

整数

creationTime

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

分区日期时间

lastStartTime

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

分区日期时间

lastStopTime

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

分区日期时间

store

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

该值是一个字符串,格式为 {storage engine}-{store format}-{major version}.{minor version}。

数据库必须处于 online 或 deallocating 状态此值才可用。对于其他数据库状态,此值为 NULL。

复合数据库的值为 NULL,因为它不适用于复合数据库。[1]

字符串

lastCommittedTxn

接收到的最后一个事务的 ID。

数据库必须处于 online 或 deallocating 状态此值才可用。对于其他数据库状态,此值为 NULL。

整数

replicationLag

当前数据库与主实例上的数据库相比落后事务的数量。滞后以负整数表示。在独立环境中,该值始终为 0。

数据库必须处于 online 或 deallocating 状态此值才可用。对于其他数据库状态,此值为 NULL。

整数

constituents

数据库可能具有的任何组成部分的名称。仅适用于复合数据库。 默认输出

列表<字符串>

options

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

复合数据库的值为 NULL,因为它不适用于复合数据库。

映射

1. 此更改适用于 2025.04 及更高版本以及 5.26.5 及更高版本。

SHOW DATABASES 命令的结果根据用户的 ACCESS 权限进行过滤。但是,某些权限允许用户查看额外的数据库,无论其 ACCESS 权限如何

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

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

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

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

数据库状态

数据库的 currentStatus 可以是以下之一

状态 描述

在线

数据库正在运行。

离线

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

正在启动

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

正在停止

数据库已停止运行,但尚未完全停止。尚无法执行任何离线操作(例如 load/dump)。

存储复制

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

初始

数据库尚未创建。

正在解除分配

仅适用于集群中的数据库。数据库仍然在线,但最终会因其在集群中的角色转移到另一个成员而离线。状态将是 deallocting,直到传输完成,这可能需要几秒到一天或更长时间。

脏数据

此状态表示已发生错误。数据库的基础存储文件可能无效。有关更多信息,请查阅 statusMessage 列或服务器日志。

已隔离

数据库已有效停止,其状态在不再隔离之前可能不会更改。有关更多信息,请查阅 statusMessage 列或服务器日志。

未知

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

请注意,对于失败的数据库,currentStatus 和 requestedStatus 是不同的。这通常意味着一个错误,但并非总是如此。例如,数据库可能由于执行恢复而需要一段时间才能从 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 列显示 NULL,currentStatus 列显示 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 | 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              | []           | {}      |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

显示数据库数量

可以使用 YIELD 和 RETURN 子句中的 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"      | ""            | []           |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

筛选列出的数据库

还可以使用 YIELD、ORDER BY 和 WHERE 来筛选和排序结果。

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

在此示例中

  • 返回的列数已通过 YIELD 子句减少。

  • 返回列的顺序已更改。

  • 结果通过 ORDER BY 子句按 currentStatus 列排序。

  • 结果已筛选,只显示包含 'o' 的数据库名称。

还可以使用 SKIP 和 LIMIT 对结果进行分页。

结果
+--------------------------------------------+
| name     | currentStatus | requestedStatus |
+--------------------------------------------+
| "movies" | "online"      | "online"        |
| "neo4j"  | "online"      | "online"        |
+--------------------------------------------+
© . This site is unofficial and not affiliated with Neo4j, Inc.