Skip to content

neo4j multiple relationships

박지율 edited this page Nov 5, 2021 · 1 revision

multiple relationships

neo4j에서 multiple relationships가 의미하는 바는 크게 두가지인데 1번째는 한 노드에서 다른 노드에 여러 관계가 형성되는 경우를 말한다.

Screen Shot 2021-11-05 at 11 34 42 AM

위와 같이 2노드사이에 관계가 여러개 형성되는 경우를 말한다.

2번째로는 총 3개(+a)의 노드가 관계-관계로 연결된 경우를 말한다.

Screen Shot 2021-11-05 at 11 34 48 AM

요구사항

요구사항에서 뮤지션앨범에 직접적인 관계를 설정하지 않더라도 조회가 가능하도록 요청했다.

즉 2번쨰 경우를 말하는 것이다.

node1-node2 relation

우선은 첫번째 관계된 자료를 조회하는 것부터 시작했다. Screen Shot 2021-11-05 at 11 37 44 AM

MATCH (a:Album {name:"WE'VE DONE SOMETHING WONDERFUL"}) - [:HAS] -> (b:Song) RETURN a,b를 통해 특정 앨범 안에 속한 노래의 정보를 가져온다.

node1-node2-node3 relations

  • 앨범- [곡] - 뮤지션
Screen Shot 2021-11-05 at 11 42 53 AM

MATCH (a:Album {name:"WE'VE DONE SOMETHING WONDERFUL"}) - [:HAS] -> (b:Song) - [:BE_CREATED] -> (c:Musician) RETURN a,b,c

이 cyper 쿼리는 기존 2개의 노드 관계에서 3개의 노드의 관계로 확장한다.

이렇게 3개의 요소를 관계-관계를 거쳐서 조회를 하면 추가로 관계설정 없이도 앨범에 참여한 뮤지션들의 정보를 조회할 수 있다.


  • 뮤지션 - [곡] - 앨범
Screen Shot 2021-11-05 at 11 49 39 AM

MATCH (a:Musician {name:"에픽하이"}) - [:SING] -> (b:Song) - [:BELONG] -> (c:Album) RETURN a,b,c 반대의 경우 (뮤지션이 만든 앨범정보 조회)에는 쿼리의 시작지점과 끝나는 지점을 바꿔주기만 하면 된다.

Clone this wiki locally