根据节点 属性 值向 neo4j 节点添加约束
Add constraints to neo4j node based on node property value
我正在使用 Cypher 约束向 neo4j 数据库添加约束,并希望创建一个仅适用于节点类型子集的约束。
我可以创建一个约束条件,即 foo
字段必须存在于 Entity
和
CREATE CONSTRAINT ON (e:Entity) ASSERT EXISTS (e.foo)
但是,我只想限制具有给定字段的节点。例如
CREATE CONSTRAINT ON (e:Entity {constrain_flag:true) ASSERT EXISTS (e.foo)
比如我可能有两个节点像
(e:Entity { foo: 'bar' , constrain_flag: true })
和
(e:Entity { constrain_flag: false })
我只希望 e.foo
必须存在的约束应用于 Entity
,其中 constrain_flag = true
,所以这两个都应该被允许。然而,
(e:Entity { constrain_flag: false })
应该抛出异常。
目前有没有办法用 cypher 和 neo4j 做到这一点?
提前致谢!
而不是添加标志 属性,您可以只 add an additional label(比如,ConstrainedEntity
)到 Entity
应该被约束的节点。查询可以继续仅使用 Entity
标签。
例如:
CREATE CONSTRAINT ON (ce:ConstrainedEntity) ASSERT EXISTS (ce.foo)
创建 "flagged" Entity
:
CREATE (e:Entity:ConstrainedEntity {id: 111, foo: 'bar'})
到 "flag" 一个现有的 Entity
:
MATCH (e:Entity)
WHERE e.id = 123
SET e:ConstrainedEntity
我正在使用 Cypher 约束向 neo4j 数据库添加约束,并希望创建一个仅适用于节点类型子集的约束。
我可以创建一个约束条件,即 foo
字段必须存在于 Entity
和
CREATE CONSTRAINT ON (e:Entity) ASSERT EXISTS (e.foo)
但是,我只想限制具有给定字段的节点。例如
CREATE CONSTRAINT ON (e:Entity {constrain_flag:true) ASSERT EXISTS (e.foo)
比如我可能有两个节点像
(e:Entity { foo: 'bar' , constrain_flag: true })
和
(e:Entity { constrain_flag: false })
我只希望 e.foo
必须存在的约束应用于 Entity
,其中 constrain_flag = true
,所以这两个都应该被允许。然而,
(e:Entity { constrain_flag: false })
应该抛出异常。
目前有没有办法用 cypher 和 neo4j 做到这一点?
提前致谢!
而不是添加标志 属性,您可以只 add an additional label(比如,ConstrainedEntity
)到 Entity
应该被约束的节点。查询可以继续仅使用 Entity
标签。
例如:
CREATE CONSTRAINT ON (ce:ConstrainedEntity) ASSERT EXISTS (ce.foo)
创建 "flagged" Entity
:
CREATE (e:Entity:ConstrainedEntity {id: 111, foo: 'bar'})
到 "flag" 一个现有的 Entity
:
MATCH (e:Entity)
WHERE e.id = 123
SET e:ConstrainedEntity