https://neo4j.com/docs/cypher-manual/current/clauses/unwind/
UNWIND :풀다, 펴다
UNWIND를 사용하면 list를 개별 행으로 변환할 수 있음
UNWIND 절에서는 내부 변수의 새 이름을 지정해야 함
1. Unwinding a list
리터럴 목록을 x 행으로 변환하여 반환
#null을 포함한 원래 list의 값은 각각 개별 행으로 반환
UNWIND [1, 2, 3, null] AS x
RETURN x, 'val' AS y
2. Creating a distinct list
DISTINCT를 사용하여 중복된 list를 set으로 변환
WITH [1, 1, 2, 2] AS coll
UNWIND coll AS x
WITH DISTINCT x
RETURN collect(x) AS setOfVals
3. Using UNWIND with any expression returning a list
list를 반환하는 임의의 표현식은 UNWIND와 함께 사용될 수 있음
#두 개의 list (a와 b)는 연결되어 새 list를 형성
WITH
[1, 2] AS a, [3, 4] AS b
UNWIND (a + b) AS x
RETURN x
4. Using UNWIND with a list of lists
UNWIND를 여러 개 사용하여 중첩 list를 각각의 행으로 변환 할 수 있음
#첫 번째 UNWIND는 세 개의 행을 생성 [1, 2], [3, 4], 5
#두 번째 UNWIND는 행으로 생성 -> 총 5행
WITH [[1, 2], [3, 4], 5] AS nested
UNWIND nested AS x
UNWIND x AS y
RETURN y
5. Using UNWIND with an empty list
5-1)
빈 list는 UNWIND와 함께 사용 불가능
빈 list는 행 수를 0으로 줄여 쿼리 실행을 중지시키고 결과를 반환하지 않음
UNWIND [] AS empty
RETURN empty, 'literal_that_is_not_returned'
5-2)
빈 list와 UNWIND를 실수로 같이 사용하지 않도록 CASE를 사용하여 빈 list를 null로 바꿀 수 있음
WITH [] AS list
UNWIND
CASE
WHEN list = [] THEN [null]
ELSE list
END AS emptylist
RETURN emptylist
'DKE > Neo4j' 카테고리의 다른 글
[Neo4j] SKIP / 2023.02.15 (0) | 2023.02.15 |
---|---|
[Neo4j] ORDER BY / 2023.02.14 (0) | 2023.02.14 |
[Neo4j] WITH / 2023.02.13 (0) | 2023.02.13 |
[Neo4j] RETURN / 2023.02.08 (0) | 2023.02.08 |
[Neo4j] MATCH (Get node or relationship by elementId) / 2023.02.08 (0) | 2023.02.08 |