列出数据库

您可以使用 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 输出

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

  • 所有数据库。

  • 特定数据库。

  • 默认数据库。

  • 主数据库。

这些命令返回以下列

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

name

数据库的名称。 默认输出

STRING

type

数据库的类型:systemstandardcomposite默认输出

STRING

aliases

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

LIST<STRING>

access

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

STRING

databaseID

数据库唯一 ID。

要使此值可用,数据库必须处于 onlinedeallocating 状态。对于其他数据库状态,该值将为 NULL

STRING

serverID

服务器实例 ID。

STRING

address

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

STRING

role

数据库的当前角色(primarysecondaryunknown)。 默认输出

STRING

writer

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

BOOLEAN

requestedStatus

数据库的预期状态。该值可以是 onlineoffline默认输出

STRING

currentStatus

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

可能的状态为

  • online

  • offline

  • starting

  • stopping

  • store copying

  • initial

  • deallocating

  • dirty

  • quarantined

  • unknown

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

STRING

statusMessage

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

STRING

default

显示这是否是 DBMS 的默认数据库。 默认输出 SHOW HOME DATABASESHOW DEFAULT DATABASE 不会返回此值。

BOOLEAN

home

如果这是当前用户的 home 数据库,则显示。 默认输出 SHOW HOME DATABASESHOW DEFAULT DATABASE 不会返回此值。

BOOLEAN

currentPrimariesCount

当前报告为正在运行的此数据库的主副本数量。它与 role=primaryname=this database 的行数相同。

INTEGER

currentSecondariesCount

当前报告为正在运行的此数据库的从副本数量。它与 role=secondaryname=this database 的行数相同。

INTEGER

requestedPrimariesCount

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

INTEGER

requestedSecondariesCount

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

INTEGER

creationTime

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

ZONED DATETIME

lastStartTime

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

ZONED DATETIME

lastStopTime

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

ZONED DATETIME

store

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

该值格式化为字符串,如下所示:

{storage engine}-{store format}-{major version}.{minor version}

要使此值可用,数据库必须处于 onlinedeallocating 状态。对于其他数据库状态,该值将为 NULL

STRING

lastCommittedTxn

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

要使此值可用,数据库必须处于 onlinedeallocating 状态。对于其他数据库状态,该值将为 NULL

INTEGER

replicationLag

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

要使此值可用,数据库必须处于 onlinedeallocating 状态。对于其他数据库状态,该值将为 NULL

INTEGER

constituents

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

LIST<STRING>

options

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

MAP

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

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

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

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

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

数据库状态

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

State 描述

online

数据库正在运行。

offline

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

starting

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

stopping

数据库不再运行,但尚未完全停止。尚无法执行脱机操作(例如 load/dump)。

store copying

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

initial

数据库尚未创建。

deallocating

仅适用于集群中的数据库。数据库仍在联机,但最终将由于其在集群中的角色转移到其他成员而脱机。状态为 deallocting,直到传输完成,这可能需要从几秒到一天或更长时间。

dirty

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

quarantined

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

unknown

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

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

显示所有可用数据库

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

Query
SHOW DATABASES
Result
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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 | []           |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

从 Neo4j 5.3 开始,SHOW DATABASES 命令还会返回托管在脱机服务器上的数据库。对于此类数据库,address 列显示 NULLcurrentStatus 列显示 unknownstatusMessage 显示 Server is unavailable

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

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

Query
SHOW DATABASE movies YIELD *
Result
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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              | []           | {}      |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

显示数据库数量

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

Query
SHOW DATABASES YIELD name
RETURN count(DISTINCT name) AS count
Result
+-------+
| count |
+-------+
| 3     |
+-------+

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

显示默认数据库

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

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

显示 home 数据库

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

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

过滤列出的数据库

还可以使用 YIELDORDER BYWHERE 对结果进行过滤和排序。

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

在此示例中

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

  • 已更改返回列的顺序。

  • 使用 ORDER BYcurrentStatus 列对结果进行排序。

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

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

Result
+--------------------------------------------+
| name     | currentStatus | requestedStatus |
+--------------------------------------------+
| "movies" | "online"      | "online"        |
| "neo4j"  | "online"      | "online"        |
+--------------------------------------------+