Neo4j 加载 CSV 以创建动态关系类型

Tay*_*orR 3 neo4j

我可以将 CSV 加载到 Neo4j 中以获取特定标签(例如PERSON),并在标签下创建节点PERSON

我还有另一个 CSV 来说明这个人之间的关系,它看起来像:

name1, relation, name2
a, LOVE, b
a, HATE, c
Run Code Online (Sandbox Code Playgroud)

我想在这些对之间创建关系,因此创建的关系应该是“爱”、“恨”等,而不是RELATION像下面的脚本那样僵硬:

load csv with headers from "file:///d:/Resources/Neo4j/person-rel.csv" as p
match (a:PERSON) where a.name=p.name1
match (b:PERSON) where b.name=p.name2
merge (a)-[r:REL {relation: p.REL}]->(b)
Run Code Online (Sandbox Code Playgroud)

通过这样做,我有一堆 -REL类型的关系,但没有LOVE- 和- 关系HATE

换句话说,我希望REL在脚本的最后一行动态分配。然后我可以使用 Neo4j API 查询所有关系类型。

这可能吗?

Mic*_*ger 6

您可以安装APOC库,然后使用apoc.merge.relationship

apoc.merge.relationship(startNode, relType, {key:value, ...}, {key:value, ...}, endNode) - 与动态类型的合并关系

load csv with headers from "file:///d:/Resources/Neo4j/person-rel.csv" as p
match (a:PERSON) where a.name=p.name1
match (b:PERSON) where b.name=p.name2
call apoc.merge.relationship(a,p.REL,{},{},b) yield rel
return count(*);
Run Code Online (Sandbox Code Playgroud)