在CREATE和MATCH之间需要Neo4j Cypher WITH

时间:2014-01-23 01:36:55

标签: neo4j cypher

我想在浏览器控制台上同时执行多个查询,这是我的请求:

CREATE (newNode1:NEW_NODE)
CREATE (newNode2:NEW_NODE)
MATCH (n1:LABEL_1 {id: "node1"}) CREATE (newNode1)-[:LINKED_TO]->(n1)
MATCH (n2:LABEL_2 {id: "node2"}) CREATE (newNode2)-[:LINKED_TO]->(n2)

当我逐个执行它们没有问题,但是当我同时执行它们时,我收到以下错误:     CREATE和MATCH之间需要WITH

有没有办法纠正这个?

1 个答案:

答案 0 :(得分:15)

添加几个WITH?

CREATE (newNode1:NEW_NODE)
CREATE (newNode2:NEW_NODE)
WITH newNode1, newNode2
MATCH (n1:LABEL_1 {id: "node1"}) 
CREATE (newNode1)-[:LINKED_TO]->(n1)
WITH newNode1, newNode2
MATCH (n2:LABEL_2 {id: "node2"}) 
CREATE (newNode2)-[:LINKED_TO]->(n2)

或者,您可以以不同的顺序执行此操作并避免使用WITHs,不同之处在于,如果n1 / n2不匹配,则不会创建任何内容。

MATCH (n1:LABEL_1 { id: "node1" }) 
MATCH (n2:LABEL_2 { id: "node2" }) 
CREATE (newNode1:NEW_NODE)-[:LINKED_TO]->(n1) 
CREATE (newNode2:NEW_NODE)-[:LINKED_TO]->(n2)