본문 바로가기

DKE/Neo4j

[Neo4j] RETURN / 2023.02.08

https://neo4j.com/docs/cypher-manual/current/clauses/return/

 

RETURN - Cypher Manual

The `RETURN` clause defines what to include in the query result set.

neo4j.com

*Example Graph

CREATE (a {name:'A', age:55, happy:"Yes!"}),
(b {name:'B'}),
(a)-[:BLOCKS]->(b),
(a)-[:KOWS]->(b)
 
1. Return nodes
반환하고 싶은 노드를 RETURN 구문에 나열
#name이 B인 노드 반환
MATCH (n {name: 'B'})
RETURN n

2. Return relationships

관계를 반환하려면 단순히 RETURN 구문에 포함

#KNOWS인 관계 반환
MATCH (n {name: 'A'})-[r:KNOWS]->(c)
RETURN r

3. Return property

속성을 반환하려면 dot(.) 을 사용

#name이 A인 노드의 name 과 age속성 반환
MATCH (n {name: 'A'})
RETURN n.name, n.age

4. Return all elements

모든 노드, 관계 및 경로를 반환하려면 * 를 사용

MATCH p = (a {name: 'A'})-[r]->(b)
RETURN *

5. Variable with uncommon characters

영어 알파벳이 아닌 문자를 변수이름으로 사용할 경우 ` 을 사용하여 변수 이름을 묶어서 사용

MATCH (`This isn\'t a common variable`)
WHERE `This isn\'t a common variable`.name = 'A'
RETURN `This isn\'t a common variable`.happy

6. Column alias

사용된 이름을 다른 이름으로 표현하고 싶은 경우 AS 사용

#반환할 때 a.age를 SomethingTotallyDifferent로 반환
MATCH (a {name: 'A'})
RETURN a.age AS SomethingTotallyDifferent

7. Optional properties

노드마다 속성이 있을 수도 있고 없을 수도 있는 경우 없는 속성은 null로 반환

#노드 B는 age 속성이 없으므로 null로 반환
MATCH (n)
RETURN n.age

8. Other experssions

RETURN 명령어는 리터럴, 문자열, 함수 등 모든 것들을 반환

MATCH (a {name: 'A'})
RETURN a.age > 30, "I'm a literal", [p=(a)-->() | p] AS `(a)-->()`

9. Unique results

DISTINCT를 사용하면 중복된 값을 한 번만 반환

#DISTINCT를 사용하지 않으면 a에서 b로 가는 관계가 총 2개이므로
#b가 두번 반환
MATCH (a {name: 'A'})-->(b)
RETURN DISTINCT b