Neo4j 기본 문법

Clear·2023년 11월 9일
0
post-thumbnail

모든 노드 및 관계 검색

MATCH (n)
RETURN n

노드 검색

  • MATCH (노드에 부여된 변수명:노드명) RETURN 노드에 부여된 변수명
MATCH (player:PLAYER) 
RETURN player

노드의 특정 속성을 검색

  • MATCH (노드에 부여된 변수명:노드명) RETURN 노드에 부여된 변수명.노드의 name 속성
MATCH (player:PLAYER)
RETURN player.name

노드의 여러 속성을 검색

MATCH (player:PLAYER)
RETURN player.name, player.height

노드의 여러 속성을 검색(+ 출력 속성명 지정)

MATCH (player:PLAYER)
RETURN player.name AS name, player.height AS height

속성 값에 해당하는 노드를 검색

MATCH (player:PLAYER)
WHERE player.name = "LeBron James"
RETURN player
MATCH (player:PLAYER {name: "LeBron James"})
RETURN player

여러 속성 값에 해당하는 노드를 검색

MATCH (player:PLAYER)
WHERE player.name = "LeBron James", player.height = 2.06
RETURN player
MATCH (player:PLAYER {name: "LeBron James", height: 2.06})
RETURN player

조건(속성 값, 관계 연산자)에 해당하는 노드를 검색

MATCH (player:PLAYER)
WHERE player.height >= 2
RETURN player
MATCH (player:PLAYER)
WHERE (player.weight / (player.height * player.height)) > 25
RETURN player

조건(속성 값, 논리 연산자)에 해당하는 노드를 검색

MATCH (player:PLAYER)
WHERE player.weight >= 100 AND player.height <= 2
RETURN player
MATCH (player:PLAYER)
WHERE player.weight >= 120 OR player.height >= 2.1
RETURN player
MATCH (player:PLAYER)
WHERE NOT player.weight >= 120 OR player.height >= 2.1
RETURN player

노드의 출력 개수를 제한

MATCH (player:PLAYER)
WHERE player.height >= 2
RETURN player
LIMIT 2

노드의 출력 시점을 제한

  • 조건에 해당하는 노드들 중 SKIP에 입력한 숫자 이후부터 결과를 출력
MATCH (player:PLAYER)
WHERE player.height >= 2
RETURN player
SKIP 2
LIMIT 2

노드의 출력 순서 조정

  • ASC : 오름차순, DESC : 내림차순
MATCH (player:PLAYER)
WHERE player.height >= 2
RETURN player
ORDER BY player.height ASC
MATCH (player:PLAYER)
WHERE player.height >= 2
RETURN player
ORDER BY player.height DESC

여러 노드를 검색

  • MATCH한 노드를 출력하고 RETURN한 노드와의 관계까지 출력
MATCH (player:PLAYER), (coach:COACH)
RETURN player
MATCH (player:PLAYER), (coach:COACH), (team:TEAM)
WHERE player.height >= 2
RETURN player, coach, team

관계에 기반한 노드 검색

MATCH (player:PLAYER) -[:PLAYS_FOR]-> (team:TEAM)
MATCH (team:TEAM) <-[:PLAYS_FOR]- (player:PLAYER)

관계의 특정 조건에 해당하는 노드 검색

MATCH (player:PLAYER) -[contract:PLAYS_FOR]-> (team:TEAM)
WHERE contract.salary >= 35000000
RETURN player

MATCH시 노드에 WHERE절 삽입하기

MATCH (lebron:PLAYER {name: "LeBron James"}) -[:TEAMMATES]-> (teammate:PLAYER)
RETURN teammate

응용

MATCH (lebron:PLAYER {name: "LeBron James"}) -[:TEAMMATES]-> (teammate:PLAYER)
MATCH (teammate) -[contract:PLAYS_FOR]-> (team:TEAM)
WHERE contract.salary >= 4000000
RETURN teammate

내부 함수 사용하기

MATCH (player:PLAYER) -[gamePlayed:PLAYED_AGAINST]-> (:TEAM)
RETURN player.name, COUNT(gamePlayed)

응용

MATCH (player:PLAYER) -[gamePlayed:PLAYED_AGAINST]-> (:TEAM)
RETURN player.name, AVG(gamePlayed) AS ppg ORDER BY ppg DESC
LIMIT 1

특정 조건에 해당하는 노드 삭제하기

MATCH (joel {name: "Joel Embiid"}) -[rel:PLAYS_FOR]-> (:TEAM)
DELETE rel

모든 노드 및 관계 삭제하기

MATCH (n)
DETACH DELETE n
profile
블로그 이전했습니다 -> https://nohquanter.tistory.com/

0개의 댓글