首页 文章

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

提问于
浏览
1

我可以将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 -relations .

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

这可能吗?

1 回答

  • 2

    您可以安装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(*);
    

相关问题