模式信息
要删除、创建或显示索引和约束,可以使用以下过程
| 限定名称 | 类型 |
|---|---|
apoc.schema.assert |
|
apoc.schema.nodes |
|
apoc.schema.relationships |
|
apoc.schema.node.constraintExists |
|
apoc.schema.relationship.constraintExists |
|
apoc.schema.node.indexExists |
|
CALL apoc.schema.assert({indexLabel:[[indexKeys]], ...}, {constraintLabel:[constraintKeys], ...}, dropExisting : true)
YIELD label, key, keys, unique, action
其输出为
-
标签 (label)
-
键 (key)
-
keys,键列表
-
unique,索引或约束是否唯一
-
action,可以是以下值:DROPPED(已删除), CREATED(已创建)
要检索数据库中所有节点标签的索引和约束信息,可以使用以下过程
CALL apoc.schema.nodes()
其输出为
| 名称 (name) | type | description(描述) |
|---|---|---|
名称 (name) |
|
索引/约束的名称 |
标签 (label) |
|
索引/约束的标签(或标签列表) |
属性 |
|
受索引/约束影响的属性键 |
状态 (status) |
|
索引可以具有以下值之一: |
type |
|
索引或约束类型。请参阅下表了解可能的值 |
failure |
|
对于状态为“FAILED”的索引,返回失败索引的错误消息(匹配 |
populationProgress |
|
索引扫描的受影响实体百分比(匹配 |
size |
|
受索引影响的实体数量。约束的值为 |
valuesSelectivity |
|
受影响属性键的去重属性值数量除以 例如,对于索引 约束的值为 |
userDescription |
|
索引/约束的描述 |
type 结果可以是以下值之一:
| 名称 (name) | 模式类型 |
|---|---|
"UNIQUENESS" |
唯一节点属性约束 |
"NODE_PROPERTY_EXISTENCE" |
节点属性存在性约束 |
"NODE_KEY" |
节点键约束 |
"FULLTEXT" |
全文索引 |
"TEXT" |
文本索引 |
"RANGE" |
范围索引 (Range index) |
"POINT" |
空间点索引 (Point index) |
"LOOKUP" |
查找索引 (Lookup index) |
要检索数据库中所有关系类型的索引和约束信息,可以使用以下过程
CALL apoc.schema.relationships()
其输出为
| 名称 (name) | type | description(描述) |
|---|---|---|
名称 (name) |
|
索引/约束的名称 |
type |
|
索引或约束类型。请参阅下表了解可能的值 |
属性 |
|
受索引/约束影响的属性键 |
状态 (status) |
|
索引可以具有以下值之一: |
关系类型 (relationshipType) |
|
索引/约束的类型(或类型列表) |
type 结果可以是以下值之一:
| 名称 (name) | 模式类型 |
|---|---|
"RELATIONSHIP_PROPERTY_EXISTENCE" |
关系属性存在性约束 |
"FULLTEXT" |
全文索引 |
"TEXT" |
文本索引 |
"RANGE" |
范围索引 (Range index) |
"POINT" |
空间点索引 (Point index) |
"LOOKUP" |
查找索引 (Lookup index) |
CALL apoc.schema.nodes({labels:['Book']})
注意:节点和关系的属性存在性约束仅在企业版中可用。
要检索节点上的索引是否存在,可以使用以下用户函数
RETURN apoc.schema.node.indexExists(labelName, propertyNames)
输出返回节点上的索引是否存在
要检索节点上的约束是否存在,可以使用以下用户函数
RETURN apoc.schema.node.constraintExists(labelName, propertyNames)
输出返回节点上的约束是否存在。
要检索关系上的约束是否存在,可以使用以下用户函数
RETURN apoc.schema.relationship.constraintExists(type, propertyNames)
输出返回关系上的约束是否存在
示例
列表模式断言
当你运行以下查询时
CALL apoc.schema.assert({Foo:['bar']},null)
你将收到此结果
当你运行以下查询时
CALL apoc.schema.assert(null,{Foo:['bar']})
你将收到此结果
当你运行以下查询时
CALL apoc.schema.assert(null,null)
你将收到此结果
列出节点的索引和约束
给定以下 Cypher 语句
CREATE CONSTRAINT FOR (bar:Bar) REQUIRE bar.foobar IS NOT NULL
CREATE CONSTRAINT FOR (bar:Bar) REQUIRE bar.foo IS UNIQUE
CREATE INDEX FOR (n:Person) ON (n.name)
CREATE INDEX FOR (n:Publication) ON (n.name)
CREATE INDEX FOR (n:Source) ON (n.name)
当你运行以下查询时
CALL apoc.schema.nodes()
你将收到此结果