티스토리 뷰

Neo4j

Cypher - SET & CREATE

joyHong 2020. 6. 15. 22:39

CREATE 구문을 사용하여 노드와 관계를 만들었다면, 이번에는 기존에 생성한 노드나 관계를 찾아 새로운 프로퍼티를 추가하거나 생성하기 위해 MATCH 구문과 함께 SET과 CREATE 구문을 함께 사용하도록 한다.

먼저 MATCH와 SET을 같이 사용하여 기존에 생성된 노드를 찾아 프로퍼티나 레이블을 추가할 수 있다.

 

1. 특정 노드를 찾아 프로퍼티를 추가

MATCH (n:Person{name:'Alice'})
SET n.age = 38, n.eyes = 'brown'
RETURN n

name이 Alice이며 label이 Person인 노드를 찾아 age와 eyes 값을 추가

 

2. 특정 노드를 찾아 프로퍼티와 label추가

MATCH (n)
WHERE n.name='Bob'
SET n:Person, n.age = 25, n.eyes = 'blue'
RETURN n, labels(n)

* WHERE 절을 사용하여 특정 노드를 찾았다.

 

3. 특정 노드를 찾아 프로퍼티를 변경

MATCH (n)
WHERE n.name='Charlie'
SET n = {age:54, eyes:'green'} , n:Person
RETURN n

name이 삭제되었음에 주의

위와 같은 형식으로 SET을 사용하면 { }로 입력한 map의 내용으로 덮어써지고 기존의 properties는 삭제된다.

 

4. 특정 노드를 찾아 프로퍼티를 변경

MATCH (n)
WHERE n.age=54 AND n.eyes='green'
SET n = {name:'Charlie', age:54, eyes:'green', gender:'male'} , n:Person
RETURN n

 

5. 특정 노드를 찾아 프로퍼티를 변경

MATCH (n)
WHERE n.name='Daniel'
SET n += { eyes:'brown'} , n:Person
RETURN n

기존의 property가 유지됨에 주의

* n += { } 형식으로 SET을 사용하면 기존의 properties는 유지가 된다.

 

6. 특정 노드를 찾아 프로퍼티를 변경 및 복수개의 label 추가

MATCH (n)
WHERE n.name='Eskil'
SET n += {name:'Eskil', age:41, eyes:'brown'} , n:Person:Developer
RETURN n

 

 

이번에는 MATCH와 CREATE 문을 사용하여 기존에 생성된 노드를 찾고 관계를 생성해 보도록 한다.

 

1. 특정 노드를 찾아 관계를 생성

MATCH (n:Person{name:'Alice'}), (m)
WHERE m.name='Bob'
CREATE (n)-[r:KNOWS]->(m)
RETURN n, type(r), m

 

2. 특정 노드를 찾아 여러 관계를 생성

MATCH (a:Person), (b), (c)
WHERE a.name='Alice' AND b.name='Charlie' AND c.name='Daniel'
CREATE (a)-[:KNOWS]->(b)-[:KNOWS]->(c)
RETURN a, b, c

 

3. 특정 노드를 찾아 관계와 관계의 property 생성

MATCH (n), (m)
WHERE n.name="Jane" AND m.name="Daniel"
CREATE (n)-[r:KNOWS{since:1999}]->(m)
RETURN n, r, m

 

4. 특정 노드를 찾아 관계와 관계의 property 생성 (SET을 함께 사용)

MATCH (a), (b)
WHERE a.name='Bob' AND b.name='Daniel'
CREATE (a)-[r:KNOWS]->(b)
SET r.since = 2020
RETURN a,type(r), r.since, b

 

 


참조 :

https://neo4j.com/docs/cypher-manual/4.0/

 

'Neo4j' 카테고리의 다른 글

Cypher - MERGE  (1) 2020.06.15
Cypher - REMOVE & DELETE  (0) 2020.06.15
Cypher - MATCH (1)  (0) 2020.06.15
Cypher - CREATE  (0) 2020.06.15
Cypher 구문 및 표현  (0) 2020.06.15
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함