2017-10-30 1 views
0

NEY4J에서 간단한 그래프를 만들 때 CYPHER를 사용하려고합니다. 내가MERGE와 MATCH (줄 4, 열 1 (오프셋 : 63)) 사이에 WITH가 필요합니다.

MERGE (nut:asset{name:'nut'}) 
MERGE (bolt:asset{name:'bolt'}) 

MERGE (nut:asset)-[:hasPart]->(washer:asset{name:'washer',domain:'tool'}) 

그것의 내 쿼리를 변경하려고하면

MERGE (nut:asset{name:'nut'}) 
MERGE (bolt:asset{name:'bolt'}) 

MATCH (nut:asset) 
WITH nut,bolt 
MERGE (nut:asset)-[:hasPart]->(washer:asset{name:'washer',domain:'tool'}) 

자사가

Can't create node `nut` with labels or properties here. The variable is already declared in this context 
말한다 나에게 오류

WITH is required between MERGE and MATCH (line 4, column 1 (offset: 63)) 
"MATCH (nut:asset)" 
^ 

예외 : 아래

쿼리입니다

이 컨텍스트에서 MERGE 문을 사용하는 방법. Neo4j link의 자습서를 사용하여 쿼리를 구성했습니다.

답변

2

두 개의 노드를 만든 후 MATCH을 직접 사용했기 때문에 첫 번째 오류가 발생했습니다. 쿼리는 연속적이지만 레이블이있는 MATCH을 사용하여 파트를 분할했습니다. 계속을 유지하려면 WITH을 사용해야합니다.

두 번째 오류는 동일한 변수 nut을 두 번 사용했기 때문에 발생했습니다.

WITH을 사용하면 쿼리에 소요 된 카디널리티와 시간을 줄일 수 있습니다.

제 질의는 다음과 같이 쓸 수있다 :

MERGE (nut:asset{name:'nut'}) 
with nut 
MERGE (bolt:asset{name:'bolt'}) 
with nut,bolt 
MERGE (nut)-[:hasPart]->(washer:asset{name:'washer',domain:'tool'}) 

및 두번째 :

MERGE (nut:asset{name:'nut'}) 
MERGE (bolt:asset{name:'bolt'}) 

MERGE (nut)-[:hasPart]->(washer:asset{name:'washer',domain:'tool'}) 
관련 문제