首页 文章

Neo4j:在具有相同Label的两个或多个节点之间创建关系

提问于
浏览
1

我有一个包含活动的csv文件(流程图):

startActivityId,Name,endActivityId
 1,A,2
 2,B,3
 3,C,4
 4,D,5

所以它看起来像这样:A-> B-> C-> D我成功地将csv文件导入neo4j服务器:使用此Cypher查询:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:path/graph/activity.csv" AS row
CREATE (:Activity {startactivityId:row.startActivityId, Name: row.Name, endActivityId: row.endActivityId});

然后我在startactivityId上创建了一个索引:

CREATE INDEX ON :activity(startActivityId);

然后我想创建这些节点之间的关系,所以尝试了这个cypher查询:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:path/graph/activity.csv" AS row
MATCH (startActivity:Activity {startActivityId: row.startActivityId})
MATCH (endActivity:Activity {startActivityId: row.endActivityId})
MERGE (startActivity)-[:LINKS_TO]->(endActivity);`

但没有关系创造,没有任何反应

我敢肯定我错过了什么因为我是新来的密码但我无法弄明白 .

有任何想法吗 ?

1 回答

  • 2

    我复制了你更新的csv(并删除了第一列头部的空白)并运行了你的查询 .

    neo4j-sh (?)$ USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///Users/jonatan/src/doc/stackexchange/32225817.pdc" as row CREATE (:Activity {startActivityId:row.startActivityId, name:row.Name, endActivityId:row.endActivityId});                                            
    +-------------------+
    | No data returned. |
    +-------------------+
    Nodes created: 4
    Properties set: 12
    Labels added: 4
    115 ms
    
    neo4j-sh (?)$ USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///Users/jonatan/src/doc/stackexchange/32225817.pdc" as row MATCH (s:Activity {startActivityId:row.startActivityId}) MATCH (e:Activity {startActivityId:row.endActivityId}) MERGE (s)-[r:LINKS_TO]->(e) RETURN r;
    +-------------------+
    | r                 |
    +-------------------+
    | :LINKS_TO[2084]{} |
    | :LINKS_TO[2085]{} |
    | :LINKS_TO[2086]{} |
    +-------------------+
    3 rows
    Relationships created: 3
    178 ms
    

    创造了三种关系 . 要确认它们是我匹配的正确关系并返回路径 (:Activity)-[:LINKS_TO]->() .

    neo4j-sh (?)$ MATCH p=(:Activity)-[:LINKS_TO]->() RETURN p;         
    +-------------------------------------------------------------------------------------------------------------------------------------------+
    | p                                                                                                                                         |
    +-------------------------------------------------------------------------------------------------------------------------------------------+
    | [Node[1415]{name:"A",startActivityId:"1",endActivityId:"2"},:LINKS_TO[2084]{},Node[1416]{name:"B",startActivityId:"2",endActivityId:"3"}] |
    | [Node[1416]{name:"B",startActivityId:"2",endActivityId:"3"},:LINKS_TO[2085]{},Node[1417]{name:"C",startActivityId:"3",endActivityId:"4"}] |
    | [Node[1417]{name:"C",startActivityId:"3",endActivityId:"4"},:LINKS_TO[2086]{},Node[1418]{name:"D",startActivityId:"4",endActivityId:"5"}] |
    +-------------------------------------------------------------------------------------------------------------------------------------------+
    3 rows
    49 ms
    neo4j-sh (?)$
    

    它看起来不错,不确定哪些不适合你 .

    MATCH p=(:Activity)-[r]->() RETURN p; 告诉你什么?

相关问题