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

Neo4j:在具有相同标签的两个或多个节点之间创建关系,neo4j,cypher,Neo4j,Cypher,我有一个包含活动(流程图)的csv文件: 所以它看起来是这样的:A->B->C->D 我已将csv文件成功导入neo4j服务器:使用此密码查询: 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

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

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

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});
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);`
然后我在startactivityId上创建了一个索引:

CREATE INDEX ON :activity(startActivityId);
然后我想创建这些节点之间的关系,因此尝试了以下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});
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);`
但没有建立关系,什么都不会发生

我肯定我错过了一些东西,因为我是新来的塞弗,但我想不出来

有什么想法吗

我复制了您更新的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\u To]->()

在我看来没问题,不确定什么对你不起作用


与p=(:Activity)-[r]->()匹配的内容返回p告诉您?

您的csv和查询中混合了大小写,例如,csv中的
startActivityId
,但查询中的
row.startActivityId
,以及创建查询中的节点属性
startActivityId
,但匹配中的
startActivityId
。如果你解决了这个问题,它能工作吗?不,我在这里写这个问题时犯了一个错误,但在密码中它是正确的,我的查询结构正确吗?这就是你的csv文件的实际外观,还是你只是为了在这里发布而将其对齐?因为如果文件是这样的,那么属性值中会有一堆空格,并且这些空格没有匹配的
startActivityId
endActivityId
MATCH(n:Activity)RETURN n
告诉您什么?不,我只是对齐以使此处看起来更可读,没有空白空格,只有一个问题,有时我在表示中没有在该圆圈(neo4j服务器管理工具)内获得名称,我如何选择一个属性显示在圆圈内?