Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
neo4j:如何导入和创建多个关系_Neo4j_Cypher - Fatal编程技术网

neo4j:如何导入和创建多个关系

neo4j:如何导入和创建多个关系,neo4j,cypher,Neo4j,Cypher,我掌握了Neo4j桌面的基本知识。这是一个生产案例:我们有工作流ID。当工作流作业完成时,它会触发另一个作业开始。这就是关系 我已经定义了300个WF工作,现在我只需要创建800个关系。我可以一次做一个。例如,这项工作: MATCH (u) WHERE u.WF_ID = 7 MATCH (v) WHERE v.WF_ID = 8 CREATE (u)-[:TRIGGERS]->(v) return u,v; 但是如果我像上面那样使用一大堆命令,要么复制粘贴到浏览器中,要么导入文件,我

我掌握了Neo4j桌面的基本知识。这是一个生产案例:我们有工作流ID。当工作流作业完成时,它会触发另一个作业开始。这就是关系

我已经定义了300个WF工作,现在我只需要创建800个关系。我可以一次做一个。例如,这项工作:

MATCH (u) WHERE u.WF_ID = 7 
MATCH (v) WHERE v.WF_ID = 8
CREATE (u)-[:TRIGGERS]->(v) return u,v;
但是如果我像上面那样使用一大堆命令,要么复制粘贴到浏览器中,要么导入文件,我就会出错。我试着这样做:

MATCH (u) WHERE u.WF_ID = 8 
MATCH (v) WHERE v.WF_ID = 10 
CREATE (u)-[:TRIGGERS]->(v)

MATCH (u) WHERE u.WF_ID = 11 
MATCH (v) WHERE v.WF_ID = 12 
CREATE (u)-[:TRIGGERS]->(v)

MATCH (u) WHERE u.WF_ID = 11 
MATCH (v) WHERE v.WF_ID = 14 
CREATE (u)-[:TRIGGERS]->(v)

return u,v
我得到:

WITH is required between CREATE and MATCH (line 2, column 1 (offset: 85))
"MATCH (u) WHERE u.WF_ID = 11 MATCH (v) WHERE v.WF_ID = 12 <br>CREATE (u)-[:TRIGGERS]->(v)"
我正在查看关于的Cypher文档,但这并不能帮助我理解本案例需要什么

谢谢你的帮助

WITH还用于将图形的读取与更新分开。 查询的每个部分都必须是只读或只读的。什么时候 从写部分到读部分,必须进行切换 带有with子句

因此,您需要在需要中间变量结果的部分之间添加,因为否则只有最后一个结果将返回:

MATCH (u) WHERE u.WF_ID = 8 
MATCH (v) WHERE v.WF_ID = 10 
CREATE (u)-[r:TRIGGERS]->(v)
WITH [[u, v, r]] AS result

MATCH (u) WHERE u.WF_ID = 11 
MATCH (v) WHERE v.WF_ID = 12 
CREATE (u)-[r:TRIGGERS]->(v)
WITH result + [[u, v, r]] AS result

MATCH (u) WHERE u.WF_ID = 11 
MATCH (v) WHERE v.WF_ID = 14 
CREATE (u)-[r:TRIGGERS]->(v)
WITH result + [[u, v, r]] AS result

RETURN result
但这种查询的变体很难看。由于每个部分的结果不会在下一部分中使用,因此我们可以使用UNION:

或者,我们可以使用“展开”功能使查询更加紧凑:


明亮的谢谢大家!@当有人回答我的问题时,我该怎么办-
MATCH (u) WHERE u.WF_ID = 8 
MATCH (v) WHERE v.WF_ID = 10 
CREATE (u)-[r:TRIGGERS]->(v)
RETURN u, v, r

UNION

MATCH (u) WHERE u.WF_ID = 11 
MATCH (v) WHERE v.WF_ID = 12 
CREATE (u)-[r:TRIGGERS]->(v)
RETURN u, v, r

UNION

MATCH (u) WHERE u.WF_ID = 11 
MATCH (v) WHERE v.WF_ID = 14 
CREATE (u)-[r:TRIGGERS]->(v)
RETURN u, v, r
WITH [[8, 10], [11, 12], [11, 14]] AS pids

UNWIND pids AS ids

    MATCH (u) WHERE u.WF_ID = ids[0] 
    MATCH (v) WHERE v.WF_ID = ids[1]
    CREATE (u)-[r:TRIGGERS]->(v)

RETURN u, v, r