使用 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 实例上保持一致,但标签应始终分组在一起。
标签 | 属性 | 类型 | 是否已索引 | 唯一约束 | 存在性约束 |
---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
作为替代方案,如果您使用 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
输出将相同,但按标签然后按属性进行字母排序。
标签 | 属性 | 类型 | 是否已索引 | 唯一约束 | 存在性约束 |
---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
请记住,由于 Neo4j 允许动态节点属性而非固定模式,因此需要对数据库进行采样以获取这些数据。这可能会遗漏图中的某些元素,例如仅存在于某个标签下少量节点中的节点属性。
此页面有帮助吗?