본문 바로가기
Cloud SIEM 제작/Graph DB(Neo4j)

Neo4j 기본 사용법

by LIZ0904 2022. 9. 16.
반응형

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-neo4j-on-ubuntu-20-04

 

How To Install and Configure Neo4j on Ubuntu 20.04 | DigitalOcean

 

www.digitalocean.com

Neo4j를 우분투 서버(20.04 LTS)에 설치하는 것은 위 링크를 참고해서 한다.

 

cupher-shell 명령을 사용해 접속해주고, 설치 시 설정한 username과 password로 로그인 해준다.

 

CREATE (john:Person {name: 'John'})
CREATE (joe:Person {name: 'Joe'})
CREATE (steve:Person {name: 'Steve'})
CREATE (sara:Person {name: 'Sara'})
CREATE (maria:Person {name: 'Maria'})

CREATE는 노드를 만드를 명령어있다. CREATE문을 사용해 Person 노드를 만들어보자

 

위 명령을 Powershell로 치면 결과로 5개의 노드와 5개의 프로퍼티, 5개의 레이블이 생성되었음을 알 수 있다.

 

노드만 생성

neo4j 브라우저에서도 생성해보자. 명령을 입력한 후 오른쪽 상단의 실행버튼(파란색 화살표)를 눌러준다.

 

그러면 브라우저 사이드바에 Person이 생긴 것을 볼 수 있다. 저 버튼을 눌러보자!

 

그 다음 Graph 버튼을 눌러주면 5개의 노드가 어떤 형식으로 생성되었는지 육안으로 확인이 가능하다.

 

 

노드 생성 및 연결선(관계) 생성

CREATE (john:Person {name: 'John'})
CREATE (joe:Person {name: 'Joe'})
CREATE (steve:Person {name: 'Steve'})
CREATE (sara:Person {name: 'Sara'})
CREATE (maria:Person {name: 'Maria'})
CREATE (john)-[:FRIEND]->(joe)-[:FRIEND]->(steve)
CREATE (john)-[:FRIEND]->(sara)-[:FRIEND]->(maria)

다음으로는 화살표를 이용해 연결선을 만들어주자!  위 명령을 입력하면 노드 생성과 동시에 연결도 된다. 대신 이걸 한번에 쳐줘야 한다.

 

 

그러면 연결선이 생긴 채로 노드가 생성된다.

 

노드 검색

MATCH (john {name: 'John'})-[:FRIEND]->()-[:FRIEND]->(fof)
RETURN john.name, fof.name

위 명령은 name: john인 사람을 포함해 john과 FRIEND 관계인 사람을 찾아서 john의 이름(john.name)과 fof.name(친구들의 이름)을 RETURN(반환)하라는 의미이다.

이때 FRIEND 관계가 직접적으로 있지 않고, 관계선을 연결하면 닿을 수 있는 모든 사람을 반환하라는 의미이다. 즉 FRIEND 관계선을 한칸 띄우고 있는 fof를 찾아달라는 의미이다.

 

 

그러므로 John과 직접적으로 닿아 있는 Joe와 Sara를 건너뛰고 Maria와 Steve가 출력된다.

 

MATCH (user)-[:FRIEND]->(follower)
WHERE user.name IN ['Joe', 'John', 'Sara', 'Maria', 'Steve'] AND follower.name =~ 'S.*'
RETURN user.name, follower.name

위는 user와 follower의 관계를 찾아달라는 의미로, Joe, John, ..., Steve의 이름중에서 follower의 이름이 S로 시작하는 사람들의 user.name과 follower.name을 반환하라는 의미이다.

 

그 결과로 John을 팔로우 하고 있는 Sara와 Joe를 팔로우하고 있는 Steve의 이름이 출력된다.

 

전체 노드 삭제(delete)

MATCH (n)
DETACH DELETE n

모든 MATCH되는 애들을 찾아서 DELETE(삭제) 해달라는 명령문이다.

 

 

반응형

댓글