나는 쿼리가 일치 된 특성 노드.는
내가 가진 문제는 기존 관계가 새로운 관계로 대체되고 있다는 것입니다.
이전에 생성 된 관계가 모두 유지되고 새 관계 만 생성되도록하려면 어떻게합니까?
나는 쿼리가 일치 된 특성 노드.는
내가 가진 문제는 기존 관계가 새로운 관계로 대체되고 있다는 것입니다.
이전에 생성 된 관계가 모두 유지되고 새 관계 만 생성되도록하려면 어떻게합니까?
당신은 두 단계로 그것을 시도 할 수 있습니다 :
MERGE
line.description
이 동일 속성.CREATE
a
과 p
노드 사이의 새로운 관계.샘플 쿼리
LOAD CSV WITH HEADERS FROM 'file:///attributes.csv' AS line
MATCH (p:Property {old_id: line.property_id})
MERGE (a:Attribute {description: line.description})
CREATE (a)-[:ATTRIBUTE_OF {old_id: line.id, value: line.value}]->(p)
포인터를 주셔서 감사합니다. 병합을 수행하고 단일 명령으로 작성할 수 있다는 것을 알지 못했습니다. – designermonkey
내가 이런 식으로 접근하는 것 :
이LOAD CSV WITH HEADERS FROM 'file:///attributes.csv' AS line
MATCH (p:Property {old_id: line.property_id})
OPTIONAL MATCH (:Attribute {description: line.description})-[r:ATTRIBUTE_OF {old_id: line.id, value: line.value}]->(p)
WHERE r IS NULL
CREATE (:Attribute {description: line.description})-[:ATTRIBUTE_OF {old_id: line.id, value: line.value}]->(p)
이 브루노 페레스의 솔루션에서 쿼리에서 약간 다르게 작동 할 수 있습니다 - 확인하십시오 귀하의 경우에 효과가 있었던 것을 다시보고하십시오.
다른 답변은 대우를 받았지만 입력 해 주셔서 감사합니다. 이제 Cypher에 대해 조금 더 알고 있습니다! :디 – designermonkey
관계에 대해 OPTIONAL MATCH를 수행하고 WHERE ... IS NOT NULL을 사용하여 관계가 존재하지 않는지 확인하십시오. (죄송합니다. 지금은 전화 만 가지고 있으므로 예제를 제공 할 수 없습니다.) –
시간이 있다면 (예 : 컴퓨터) 나는이 예제를보고 싶습니다. 감사합니다 :) – designermonkey
내 대답을 추가했습니다. 또한 GraphAware의 [Cypher MERGE Explained] (https://graphaware.com/neo4j/2014/07/31/cypher-merge-explained.html) 게시물을 확인하는 것이 좋습니다. –