知识库

使用 APOC Procedures 查看模式数据

APOC Procedures 提供了 元过程 (meta procedures) 来查看关于您的数据库模式及其存储数据的信息。

过程 apoc.meta.schema() 使用图数据的采样来生成包含图标签、关系、属性等的元数据映射。

由于返回的元数据是一个映射,因此可以对其进行转换以更好地呈现所需信息,并且可以格式化以提供更表格化的数据结构。

这需要对映射键集合进行 UNWIND 操作,并获取每个键的值。

这里是转换模式数据的一种可能方法,使其类似于 Oracle 中的 USER_TAB_COLUMNS 系统对象

CALL apoc.meta.schema() YIELD value as schemaMap
UNWIND keys(schemaMap) as label
WITH label, schemaMap[label] as data
WHERE data.type = "node"
UNWIND keys(data.properties) as property
WITH label, property, data.properties[property] as propData
RETURN label,
property,
propData.type as type,
propData.indexed as isIndexed,
propData.unique as uniqueConstraint,
propData.existence as existenceConstraint

以下是运行在内置教程的电影图上(使用 :play movies),并在 :Person(name) 上添加索引、在 :Movie(title) 上添加唯一约束后的示例结果表。输出顺序不能保证在不同的 Neo4j 实例上保持一致,但标签应始终分组在一起。

标签 属性 类型 是否已索引 唯一约束 存在性约束

"Person"

"name"

"STRING"

true

false

false

"Person"

"born"

"STRING"

false

false

false

"Movie"

"tagline"

"STRING"

false

false

false

"Movie"

"title"

"STRING"

true

true

false

"Movie"

"released"

"INTEGER"

false

false

false

作为替代方案,如果您使用 APOC 3.1.3.8 或更高版本(3.1.x 系列)或 3.2.0.4 或更高版本(3.2.x 系列),您可以使用 apoc.map.sortedProperties(),并对结果使用 UNWIND 操作。

CALL apoc.meta.schema() yield value
UNWIND apoc.map.sortedProperties(value) as labelData
WITH labelData[0] as label, labelData[1] as data
WHERE data.type = "node"
UNWIND apoc.map.sortedProperties(data.properties) as property
WITH label, property[0] as property, property[1] as propData
RETURN label,
property,
propData.type as type,
propData.indexed as isIndexed,
propData.unique as uniqueConstraint,
propData.existence as existenceConstraint

输出将相同,但按标签然后按属性进行字母排序。

标签 属性 类型 是否已索引 唯一约束 存在性约束

"Movie"

"released"

"INTEGER"

false

false

false

"Movie"

"tagline"

"STRING"

false

false

false

"Movie"

"title"

"STRING"

true

true

false

"Person"

"born"

"STRING"

false

false

false

"Person"

"name"

"STRING"

true

false

false

请记住,由于 Neo4j 允许动态节点属性而非固定模式,因此需要对数据库进行采样以获取这些数据。这可能会遗漏图中的某些元素,例如仅存在于某个标签下少量节点中的节点属性。

© . All rights reserved.