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

时间:2017-12-14 07:55:50

标签: neo4j

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

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

name1, relation, name2
a, LOVE, b
a, HATE, c

我想在这些对之间创建一个关系,这样创建的关系应该是" LOVE"," HATE"等等,而不是刚刚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)

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

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

这可能吗?

1 个答案:

答案 0 :(得分:3)

您可以安装APOC library,然后使用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(*);