-
Neo4j Cypher 기본구문(Create, Match, Merge 절)Data & ML & AI/GraphDB(Neo4j) 2022. 6. 9. 21:06반응형
Create a Node
SQL에서는 테이블을 생성할 때 Create를 사용한다면
Cyper에서는 노드를 생성할 때 Create를 사용합니다.Create (p:Person {name: 'John Doe'}) RETURN p Create (p:Person {name: 'John Doe'}) // 이 경우 return이 없으므로 결과를 보여주지 않음
Finding Nodes
Match를 통해 노드 및 관계를 찾으며, 이때 속성을 이용하거나 where을 활용해 조건을 설정할 수 있습니다.
// 동일한 결과를 나타내는 두 쿼리 Match (p:Person {name: 'Tom Hanks'}) RETURN p MATCH (p:Person) where p.name = "Tom Hanks" RETURN p
Merge Clause
Merge 절은 다음의 두 경우에 주로 사용할 수 있습니다.
- 이미 존재하는 노드를 match하여 그 결과와 bind할 때
- 새로운 노드를 create하고 그 노드와 bind할 때
MERGE (m:movie {title: 'Greyhound'}) //1 ON MATCH SET m.lastUpdatedAt = timestamp() //2 ON CREATE SET m.released = "2020", m.lastUpdatedAt = timestamp() //3 Return m //4
- "Greyhound"라는 제목을 가진 영화노드
- 그 노드를 match할 수 있다면 업데이트일자를 지금으로 수정
- 노드가 없다면 새로 create하고 개봉연도를 2020년으로, 업데이트일자를 지금으로 수정
Create a Relationship
SQL에서와 달리, Cypher에서는 Match절과 Create절을 연속적으로 사용할 수 있습니다.
이 점을 이용해 원하는 노드에서만 관계를 쉽게 설정할 수 있습니다.MATCH (p:Person), (m:Movie) WHERE p.name = "Tom Hanks" and m.title = "Cloud Atlas" CREATE (p)-[w:WATCHED]->(m) RETURN type(w)
관계가 잘 생성되었는지 확인해 보겠습니다.
MATCH (p:Person)-[w:WATCHED]-(m:Movie) WHERE p.name = "Tom Hanks" RETURN p,m,w
Advanced Cypher queries
1) Finding who directed Cloud Atlas movie
(m:"클라우드 아틀라스"영화) <- [d:를 감독한] - (p:사람)
MATCH (m:Movie {title: "Cloud Atlas"})<-[d:DIRECTED]-(p:Person) return p.name
2) Finding all people who have co-acted with Tom Hanks in any movie
(tom:"톰 행크스"가) - [:출연한] -> (m:영화에서) <- [:출연한] - (p:다른 사람들)
MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(m:Movie)<-[:ACTED_IN]-(p:Person) return p,m,tom
3) Finding all people related to the movie Cloud Atlas in any way
(p:사람들) - [어떻게든 연관된] - (m: "클라우드 아틀라스"영화와)
MATCH (p:Person)-[relatedTo]-(m:Movie {title: "Cloud Atlas"}) return p.name, type(relatedTo) as related
여기서 relatedTo는 어떤 글자로든 바꿀 수 있는 별칭입니다.
4) Finding Movies and Actors that are 3 hops away from Kevin Bacon.
(p:"케빈 베이컨"과) - [거리가 1~3인] - (모든 노드들)
MATCH (p:Person {name: "Kevin Bacon"})-[*1..3]-(hollywood) return DISTINCT p, hollywood
Distinct: Table 형식으로 볼 때 동일한 노드, 관계 등에 대한 중복출력 방지(그래프형식으로 볼 때는 똑같은 결과)참고
https://sandbox.neo4j.com/ (Movies Project Tutorial을 진행해 볼 수 있습니다.)
반응형'Data & ML & AI > GraphDB(Neo4j)' 카테고리의 다른 글
Neo4j csv파일 열기(LOAD CSV) (0) 2022.07.11 Neo4j 제약조건 생성하기(CONSTRAINT: unique, Not Null) (0) 2022.07.07 Neo4j의 기본 구성요소(Elements of Neo4j; study with Movies Project Tutorial) (0) 2022.06.09 Neo4j와 Cypher 구문의 기본요소 (0) 2022.06.08 GraphDB와 Neo4j (0) 2022.06.08