我可以将 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 查询所有关系类型。
这可能吗?
您可以安装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)