반응형
Neo4j는 Cypher라는 Query Language를 사용합니다.
SQL과 유사하지만 그래프 데이터베이스의 특성에 맞게 설계되어
노드와 관계를 직관적으로 탐색할 수 있습니다.
- Node: 그래프DB의 데이터 레코드
- Label: Node의 집합
- Relationship: Node 사이의 관계
- Property: Node의 속성
해당 포스팅에서는 Neo4j의 Cypher 언어의 기본적인 사용법에 대해서 정리합니다.
아직 Neo4j를 설치 하지 않았다면 아래 포스팅 참고👇
목차
1. Node 생성
아래와 같이 Cypher 언어로 노드를 생성 할 수 있습니다.
-- Node 추가
CREATE (p:Person {name: '테스트'})
여기서 Person은 Node의 Label을 뜻합니다.
name은 Property를 뜻합니다.
2. Node 조회
조회는 아래 MATCH라는 커맨드로 가능합니다.
-- Node 조회
MATCH (p:Person{name:'테스트'})
RETURN p
"MATCH (임시변수:노드 {조건}) RETURN 임시변수"와 같은 형태로 조회 할 수 있습니다.
만약 전체를 조회하려면 아래와 같이 가능합니다.
MATCH (p:Person)
RETURN p
3. Relationship 추가
우선 Person {name: 'Dan'} 노드를 하나더 만들어 봅시다.
CREATE (p:Person {name: 'Dan'})
그리고 '테스트', 'Dan' 이라는 노드 간에 'LIKES'를 추가해봅시다.
-- Relationship 추가
MATCH (a:Person {name:'테스트'}),(b:Person{name: 'Dan'})
CREATE (a)-[r:LIKES]->(b)
RETURN r
조회해봤습니다.
관계가 만들어졌네요.
4. Node, Relationship 삭제
삭제하려는 Node에 연결되어있는 Relationship이 있다면
아래와 같이 에러를 띄게 됩니다.
-- Node 삭제
MATCH (p:Person {name: 'Dan'}) DELETE p
즉, 삭제 전에 Relationship을 먼저 제거해줘야합니다.
-- Relationship 삭제
MATCH (p:Person)-[r:LIKES]->(Person{name:'Dan'}) delete r
이 후 Node 삭제를 하면 정상적으로 삭제 될 것입니다.
5. Constraint 추가
만약 노드를 생성하는데 같은 Properties가 생성되는 것을 방지하고자 하면
특정 필드를 유니크화 해줘야합니다.
-- Constraint 추가
CREATE CONSTRAINT FOR (n:Person) REQUIRE n.name IS UNIQUE
반응형
'개발 이야기 > NoSQL' 카테고리의 다른 글
Neo4j를 docker-compose로 띄워보기 (0) | 2024.07.30 |
---|---|
MongoDB, docker-compose로 띄워보기 (0) | 2024.02.14 |
Redis를 Docker Compose 로 띄우기 (0) | 2021.01.22 |
Mongodb(Docker container) Volume 설정 (0) | 2018.12.29 |
Mongodb를 Docker Container로 띄우기 (0) | 2018.12.29 |