web-dev-qa-db-ja.com

CREATEとMATCHの間にはNeo4jCypherWITHが必要です

ブラウザコンソールで同時に複数のクエリを実行したいのですが、これが私のリクエストです:

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)

1つずつ実行しても問題ありませんが、同時に実行すると次のエラーが発生します。CREATEとMATCHの間にWITHが必要です。

これを修正する方法はありますか?

18
jimmy

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)

または、別の順序で実行してWITHを回避することもできます。違いは、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)
18
Eve Freeman