Neo4j Cypher 쿼리

Cypher 키워드

대부분의 프로그래밍 언어와 마찬가지로 Cypher에는 쿼리 부분의 특정 작업을 위해 예약된 몇 개의 단어가 있다. Neo4j에서 데이터를 생성, 읽기, 업데이트 또는 삭제할 수 있어야 하며 키워드는 이러한 기능을 수행하는데 도움이 된다. 두 가지 일반적인 키워드에 대해 자세히 살펴보겠다(자세한 내용은 이후에 가이드에서 다룰 예정이다).

MATCH

Cypher의 MATCH 키워드는 데이터베이스에서 기존 노드, 관계, 레이블, 속성 또는 패턴을 검색하는 것이다. SQL에 익숙하다면 SQL에서의 SELECTMATCH는 거의 비슷하게 동작한다.

MATCH를 사용하여 데이터베이스에서 모든 노드 레이블을 찾고, 특정 노드를 검색하고, 특정 관계가 있는 모든 노드를 찾아 내며, 노드 및 관계의 패턴을 찾는 등의 작업을 수행할 수 있다.

RETURN

Cypher의 RETURN 키워드는 Cypher 쿼리에서 반환할 수 있는 값 또는 결과를 지정한다. 쿼리 결과에서 노드, 관계, 노드 및 관계 속성 또는 패턴을 반환하도록 Cypher에 지시할 수 있고, 데이터 저장을 수행할 때는 필요하지 않지만, 읽기에는 필요하다.

RETURN는 노드 및 관계 변수를 사용할 때 중요해진다. 노드, 관계, 속성 또는 패턴을 다시 가져오려면 반환하려는 데이터에 대해 MATCH 절에 변수를 지정해야 한다.

사이퍼 예제

MATCH, RETURN 키워드를 사용하여 지금까지 배운 구문의 몇 가지 예를 살펴보겠다. 각 예제는 우리가 하고자 하는 것에 대한 설명으로 시작하고 Neo4j 브라우저에서 실행된 쿼리 결과 아래에 이미지를 보여준다.

  • 예제 1: Person 그래프에서 레이블이 지정된 노드를 찾는다. RETURN에서 Person 노드를 검색하려면, 노드에 대해 p와 같은 변수를 사용해야 한다.

    MATCH (p:Person)
    RETURN p
    LIMIT 1
    
  • 예제 2: Person 그래프에서 이름이 ‘Tom Hanks’인 노드를 찾는다. 나중에 같은 이름을 참조하는 한 변수 이름을 원하는 대로 지정할 수 있다.

    MATCH (tom:Person {name: 'Tom Hanks'})
    RETURN tom
    
  • 예제 3: Tom Hanks가 감독한 Movie를 찾는다.

    MATCH (:Person {name: 'Tom Hanks'})-[:DIRECTED]->(movie:Movie)
    RETURN movie
    
  • 예제 4: Tom Hanks가 감독한 것을 찾지만 이번에는 영화 제목만 반환한다.

    MATCH (:Person {name: 'Tom Hanks'})-[:DIRECTED]->(movie:Movie)
    RETURN movie.title
    

별칭 반환 값

모든 속성이 movie.title 위의 예와 같이 단순하지는 않다. 일부 속성은 속성 길이, 여러 단어로 된 설명, 개발자 전문 용어 및 기타 단축키로 인해 이름이 잘못되었다. 이러한 명명 규칙은 특히 보고서 및 기타 사용자 대면 인터페이스에서 끝나는 경우 읽기 어려울 수 있다.

// 이름이 좋지 않은 속성
MATCH (tom:Person {name:'Tom Hanks'})-[rel:DIRECTED]-(movie:Movie)
RETURN tom.name, tom.born, movie.title, movie.released

SQL과 마찬가지로 AS 키워드를 사용하고 더 간단한 이름으로 속성의 별칭을 지정하여, 반환 결과의 이름을 바꿀 수 있다. 고객의 주문과 주문 항목 수를 나열하는 목업 예제를 볼 수 있다.

SQL과 마찬가지로 AS 키워드를 사용하고 속성에 더 간편한 이름으로 별칭을 지정하여 결과의 변수명을 바꿀 수 있음

고객의 주문과 주문의 항목 수를 나열하기 위한 예제

//cleaner printed results with aliasing
MATCH (tom:Person {name:'Tom Hanks'})-[rel:DIRECTED]-(movie:Movie)
RETURN tom.name AS name, tom.born AS `Year Born`, movie.title AS title, movie.released AS `Year Released`

별칭 앞뒤에 백틱(`) 문자를 사용하여 공백이 있는 반환 별칭을 지정할 수 있다(movie.released AS `Year Released` ). 공백이 포함된 별칭이 없으면 백틱을 사용할 필요가 없다.

참조




최종 수정 : 2024-01-18