我试图动态地在节点之间创建关系。我遇到的问题是我无法使用变量来指定关系类型。
例如,我有数据:
{
nodes: [
{
"name":"Node1"
},
...
],
relationships: [
{
"sourceNode": "Node1",
"destinationNode": "Node2",
"relationshipType": "FRIEND"
},
...
]
}
假设已创建所有节点。
我现在想要在relationshipType
类型的节点之间创建关系。
我试图这样做:
WITH {json} AS document
UNWIND document.relationships AS relationship
MATCH (pdt:Node {name: relationship.sourceNode})
MATCH (cdt:Node {name: relationship.destinationNode})
CREATE (pdt)-[r:relationship.relationshipType]->(cdt)
RETURN pdt.name,type(r),cdt.name
然而,它在[r:relationship.relationshipType]
处于崩溃状态,因为它期待像[r:CHILD]
这样的显式类型。
是否可以使用变量来设置关系类型?
答案 0 :(得分:8)
安装APOC plugin后,您可以使用apoc.create.relationship
程序创建与动态类型的关系。
例如:
WITH {json} AS document
UNWIND document.relationships AS relationship
MATCH (pdt:Node {name: relationship.sourceNode})
MATCH (cdt:Node {name: relationship.destinationNode})
CALL apoc.create.relationship(pdt, relationship.relationshipType, NULL, cdt) YIELD rel
RETURN pdt.name, type(rel), cdt.name