기타/프로그래밍

[그래프 데이터베이스][무작정해보기] [9/30] 노드속성을 이용한 쿼리 및 필터

코드아키택트 2021. 1. 18. 20:58
반응형

코멘트 만들기

 

//를 이용해서 코멘트 표시할 수 있음

 

 

 

 

그래프의 데이터 모델 확인하기 : CALL db.schema.visualization()

 처음 공부할때, 그래프의 데이터 모델을 확인하는 것은 유용하다. `CALL db.schema.visualization()`를 이용하여 노드, 라벨, 관계에대한 정보를 얻을 수 있다.

 

 다음은 기본 movie data에서 실행했을때 결과.

노드의 종류와 라벨 그리고 relation의 종류를 볼 수 있음.

 person과 movie 두 노드를 볼 수 있으며, 각각은 다른 색상으로 표시되어 있음. 6가지 relation이 있으며, 사람과 사람 사이에는 follow 할 수 있기 때문에 재귀적인 모습으로 표시됨.

 

 

 

속성

  • 노드를 정의하기 위해 속성값을 더 집어넣을 수 있음.

  • 속성은 속성 키 값으로 정의됨.

  • 같은 타입의 노드들이 꼭 같은 속성을 공유할 필요는 없음.

매트릭스와 브이 포 벤데타에는 태그라인이 있지만 위의 영화엔 없음.

 

 

속성 Key값 조사하기

속성값으로 쿼리하기 전에, 어떤 속성 key 값이 존재하는지 확인해야함. 

다음과 같은 두가지 방법이 있음.

  • 왼쪽의 Property Keys확인

  • CALL db.propertyKeys() 입력

왼쪽에서 확인하거나
다음과 같이 입력가능.

 

 

속성값으로 노드 필터링하기

속성값을 특정해서 노드를 찾아냄

 

하나의 속성값에 대해서만 찾을 떄

MATCH (variable {propertyKey: propertyValue})
RETURN variable

-> 어떤 노드이던지, 해당하는 속성 key와 value를 가지고 있으면 모두 보여줌

 

하나의 속성값과 하나의 라벨 안에서만 찾을 떄

MATCH (variable:Label {propertyKey: propertyValue})
RETURN variable

-> 특정 노드 중, 해당하는 속성 key와 value를 가지고 있으면 모두 보여줌

-> 이는 같은 속성 key와 value값이 다른 노드종류의 노드 사이에도 존재할 수 있기 때문에 원치 않는 정보가 나오는 것을 방지하기 위함.

 

여러 속성값에 대해서 찾을때

MATCH (variable {propertyKey1: propertyValue1, propertyKey2: propertyValue2})
RETURN variable

 

 

하나의 라벨안의 여러 속성값에 대해 찾을 때

MATCH (variable:Label {propertyKey: propertyValue, propertyKey2: propertyValue2})
RETURN variable

 

예시 : 출생일로 노드 찾기

1970년에 태어난 사람을 찾고 싶다면?

MATCH (p:Person {born: 1970})
RETURN p

총 4명의 배우가 나옴.

 

예시: 여러 속성에 대해서 찾기

released와 tagline을 이용해서 찾기

MATCH (m:Movie {released: 2003, tagline: 'Free your mind'})
RETURN m

매트릭스만 나옴.

 

속성값만 반환하기.

지금까진 노드를 RETURN하는 방법만 배움. 아래는 속성값을 return 하는 예시들

 

하나의 속성(prop1)에 대해 노드를 찾은후 다른 속성값(prop2) RETURN

MATCH (variable {prop1: value})
RETURN variable.prop2

 

하나의 라벨안의 속성(prop1)에 대해 노드를 찾은후 다른 속성값(prop2) RETURN

MATCH (variable:Lable {prop1: value})
RETURN variable.prop2

 

하나의 라벨안의 두가지 속성(prop1,prop2)에 대해 노드를 찾은후 다른 속성값(prop3) RETURN

MATCH (variable:Label {prop1: value, prop2: value})
RETURN variable.prop3

 

하나의 속성(prop1)에 대해 찾은후, 두 속성값(prop2,prop3) RETURN

MATCH (variable {prop1:value})
RETURN variable.prop2, variable.prop3

 

예시: 속성값 RETURN하기

노드를 RETURN하지 않고, 이름과 출생년도를 RETURN함.

MATCH (p:Person {born: 1965})
RETURN p.name, p.born

1965년에 태어난 사람들의 이름과 년도를 반환함.

 

 

열이름에 다른 이름 지정하기(Aliasing)

열이름을 커스터마이징하고 싶다면 지정 할수 있음.

 

 

기초구문

MATCH (variable:Label {propertyKey1: propertyValue1})
RETURN variable.propertyKey2 AS alias2

 

 

예시: 열에 다른이름 지정하기.

MATCH (p:Person {born: 1965})
RETURN p.name AS name, p.born AS `birth year`

앨리어싱을 사용하여 테이블 Heading을 바꿈

 

 

 

참고자료


neo4j.com/graphacademy/training-querying-40/01-querying40-introduction-to-cypher/#_exercise_2_filtering_queries_using_property_values

반응형