由于 _id 上的约束违反,无法复制节点
Cannot duplicate node due to constraint violation on an _id
我们正在尝试在对 属性 _id
具有重复约束的标签上克隆节点
MATCH (s:part{_id:'aaaaa'})
CREATE (newNode:part)
SET newNode = s, newNode._id = 'bbbbb'
RETURN newNode
我们得到
Node(52) already exists with label `part` and property `_id` = 'aaaaa'
如何克隆一个节点只是改变约束属性?
我们可以使用地图而不是节点变量作为要设置的属性的来源。
使用map projection,我们可以让该映射获取第一个节点的所有属性,并有选择地覆盖我们想要替换的属性。
MATCH (s:part{_id:'aaaaa'})
CREATE (newNode:part)
SET newNode = s {.*, _id:'bbbbb'}
RETURN newNode
您可以像这样使用 apoc.refactor.cloneNodes 克隆节点:
MATCH (s:part{_id:'aaaaa'}) WITH s CALL apoc.refactor.cloneNodes([s]) yield input, output RETURN *
此查询将克隆没有唯一属性的节点,因此您必须稍后设置该属性:
MATCH (copy:part) WHERE not exists(copy._id) SET copy._id='bbbbb' RETURN copy
此 link 说明如何克隆节点和关系:https://neo4j-contrib.github.io/neo4j-apoc-procedures/3.5/graph-refactoring/clone-nodes/
我们正在尝试在对 属性 _id
具有重复约束的标签上克隆节点MATCH (s:part{_id:'aaaaa'})
CREATE (newNode:part)
SET newNode = s, newNode._id = 'bbbbb'
RETURN newNode
我们得到
Node(52) already exists with label `part` and property `_id` = 'aaaaa'
如何克隆一个节点只是改变约束属性?
我们可以使用地图而不是节点变量作为要设置的属性的来源。
使用map projection,我们可以让该映射获取第一个节点的所有属性,并有选择地覆盖我们想要替换的属性。
MATCH (s:part{_id:'aaaaa'})
CREATE (newNode:part)
SET newNode = s {.*, _id:'bbbbb'}
RETURN newNode
您可以像这样使用 apoc.refactor.cloneNodes 克隆节点:
MATCH (s:part{_id:'aaaaa'}) WITH s CALL apoc.refactor.cloneNodes([s]) yield input, output RETURN *
此查询将克隆没有唯一属性的节点,因此您必须稍后设置该属性:
MATCH (copy:part) WHERE not exists(copy._id) SET copy._id='bbbbb' RETURN copy
此 link 说明如何克隆节点和关系:https://neo4j-contrib.github.io/neo4j-apoc-procedures/3.5/graph-refactoring/clone-nodes/