DB - GraphDB (neo4j & cypher)
cypher 쿼리 사용법 정리
특정 값을 가진 노드를 찾기
MATCH
(SQL: SELECT
)
(variable: Label {property : value})-[:relationshop]->(variable: Lable)
OPTIONAL MATCH
- outer join과 같은 기능으로 특정 property가 없는 node도 ‘null’ 값으로 출력함
- [ex] Category(
label
)에서 name(property
)이 “스킨케어”인 노드를 찾기
match (cat:Category {name : "스킨케어"})
return cat
{"identity":0,
"labels" : ["Category"],
"properties" : {
"name" : "스킨케어"
}
}
- [ex] Category(
label
) name(property
)이 “스킨케어”인 Product(label
)의 노드를 찾기
match (cat:Category {name : "스킨케어"})<-[:classified]-(prd:Product)
return prd
{"identity":0,
"labels" : ["Category"],
"properties" : {
"name" : "스킨케어"
}
}
연산자를 사용해 특정 값을 가진 노드를 찾기
WHERE
- 부정:
NOT
- 값의 대소 비교:
<
, >
, <=
, >=
- 값이 존재:
exists()
- string 연산자:
STARTS WITH
, CONTAINS
, ENDS WITH
- 리스트 요소
IN
Aggregation
count()
- 노드 개수를 반환
count(property)
: null 값을 제외하고 카운트
count(*)
: null 값을 포함해 카운트
collect()
- 노드를 list에 담기
- collection 요소 개수 :
size()
UNWIND
ORDER BY
- 특정 property를 기준으로 오름차순(default) 또는 내림차순(
ORDER BY ... DESC
)
DISTINCT
- [ex] Unwind 사용법
WITH ['Graphs','Query Languages'] AS techRequirements
UNWIND techRequirements AS technology
Reference
official-search
official-aggregation