模式信息
要删除、创建或显示索引和约束,可以使用以下过程
限定名称 | 类型 |
---|---|
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
输出结果为
-
标签
-
键
-
键列表
-
唯一,如果索引或约束是唯一的
-
操作,可以是以下值:DROPPED(已删除), CREATED(已创建)
要检索数据库中所有节点标签的索引和约束信息,可以使用以下过程
CALL apoc.schema.nodes()
输出结果为
名称 | 类型 | 描述 |
---|---|---|
名称 |
|
索引/约束的名称 |
标签 |
|
索引/约束的标签(或标签列表) |
属性 |
|
受索引/约束影响的属性键 |
状态 |
|
索引可以有以下值之一: |
类型 |
|
索引或约束类型。可能的值见下表 |
失败 |
|
如果索引状态为“FAILED”,则返回失败索引的失败消息(与 |
populationProgress |
|
索引扫描的受影响实体百分比(与 |
大小 |
|
受索引影响的实体数量。约束的值为 |
valuesSelectivity |
|
现有独立属性值数量除以 例如,对于索引 约束的值为 |
userDescription |
|
索引/约束的描述 |
type
结果可以是以下值之一
名称 | 模式类型 |
---|---|
"UNIQUENESS" |
唯一节点属性约束 |
"NODE_PROPERTY_EXISTENCE" |
节点属性存在性约束 |
"NODE_KEY" |
节点键约束 |
"FULLTEXT" |
全文索引 |
"TEXT" |
文本索引 |
"RANGE" |
范围索引 |
"POINT" |
点索引 |
"LOOKUP" |
查找索引 |
要检索数据库中所有关系类型的索引和约束信息,可以使用以下过程
CALL apoc.schema.relationships()
输出结果为
名称 | 类型 | 描述 |
---|---|---|
名称 |
|
索引/约束的名称 |
类型 |
|
索引或约束类型。可能的值见下表 |
属性 |
|
受索引/约束影响的属性键 |
状态 |
|
索引可以有以下值之一: |
relationshipType |
|
索引/约束的类型(或类型列表) |
type
结果可以是以下值之一
名称 | 模式类型 |
---|---|
"RELATIONSHIP_PROPERTY_EXISTENCE" |
关系属性存在性约束 |
"FULLTEXT" |
全文索引 |
"TEXT" |
文本索引 |
"RANGE" |
范围索引 |
"POINT" |
点索引 |
"LOOKUP" |
查找索引 |
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()
您将收到此结果
