使用 APOC 过程查看模式数据
APOC 过程提供元数据过程来查看有关数据库模式及其存储的数据的信息。
过程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 允许动态节点属性而不是固定模式,因此需要对数据库进行采样才能获取此数据。这可能会遗漏图中的一些元素,例如仅在标签内一小部分节点中存在的节点属性。
此页面是否有帮助?