본문 바로가기

DKE/Neo4j

[Neo4j] SET / 2023.02.03

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

 

SET - Cypher Manual

The `SET` clause is used to update labels on nodes and properties on nodes and relationships.

neo4j.com

 

* Example Graph

create (peter {name:'Peter', age:34}),
(george {name:'George'}),
(andy:Swedish{name:'Andy', age:36, hungry:TRUE}),
(stefan {name:'Stefan'}),
(george)-[:KNOWS]->(peter),
(andy)-[:KNOWS]->(peter),
(stefan)-[:KNOWS]->(andy)
example

 

1. Set a property

노드나 관계에  속성 추가

1-1)

#이름이 Andy인 노드에 surname 속성 추가
MATCH (n {name: 'Andy'})
SET n.surname = 'Taylor'
RETURN n.name, n.surname

 1-2) Using more complex expressions

복잡한 표현식을 사용하여 노드 또는 관계에 속성을 설정할 수 있음 

예를 들어 노드를 직접 지정하는 것과 달리 다음 쿼리에서는 식으로 선택한 노드의 속성을 설정하는 방법을 보여줌

#이름이 Andy이고 나이가 36인 노드에 worksln 속성 추가
match(n {name: 'Andy'})
set (case when n.age = 36 then n end).worksIn = 'Malmo'
return n.name, n.worksIn

1-3) case 표현식과 일치하는 노드가 없으면 업데이트가 발생하지 않으므로 worksIn 속성이 설정되지 않음

#이름이 Andy고 나이가 55인 노드가 없으므로 업데이트 발생 X
MATCH (n {name: 'Andy'}) SET (CASE WHEN n.age = 55 THEN n END).worksIn = 'Malmo' RETURN n.name, n.worksIn
 

2. Update a property

노드 또는 관계의 속성을 업데이트하는 데 사용할 수 있음

#age 속성을 string으로 변경
MATCH (n {name: 'Andy'})
SET n.age = toString(n.age)
RETURN n.name, n.age

3. Remove a property

일반적으로 속성을 제거할 때 REMOVE를 사용하지만, SET으로도 속성을 제거할 수 있음

MATCH (n {name: 'Andy'})
SET n.name = null
RETURN n.name, n.age

4. Copy properties between nodes and relationships

properties() 함수를 사용하여 한 노드 또는 관계에서 다른 노드로 모든 속성을 복사할 수 있음

MATCH
  (at {name: 'Andy'}),
  (pn {name: 'Peter'})
SET at = properties(pn)
RETURN at.name, at.age, at.hungry, pn.name, pn.age

5. Replace all properties using a map and =

= 와 set을 함께 사용하여 노드의 기존 속성을 바꿀 수 있음

#이름 속성 Peter 에서 Peter Smith로 Update, age 속성 삭제, position 속성 추가
MATCH (p {name: 'Peter'})
SET p = {name: 'Peter Smith', position: 'Entrepreneur'}
RETURN p.name, p.age, p.position

 

6. Remove all properties using an empty map and =

{} 과 =을 사용하여 모든 노드 또는 관계의 속성을 제거할 수 있음

#peter smith에 존재하는 모든 속성 삭제
MATCH (p {name: 'Peter Smith'}) SET p = {} RETURN p.name, p.age

7. Mutate specific properties using a map and +=

7-1) +=와 set을 함께 사용하여 맵의 속성을 세분화된 방식으로 변경할 수 있음

#이름 속성을 변경하지 않고 age를 34에서 38로 업데이트하고 hungry와 position 속성을 추가
MATCH (p {name: 'Peter'}) 
SET p += {age: 38, hungry: true, position: 'Entrepreneur'} 

7-2) =와 달리 +=는 {}를 함께 사용할 때 기존 속성이 제거되지 않음

#변화 없음
MATCH (p {name: 'Peter'}) SET p += {} RETURN p.name, p.age

8. Set multiple properties using one SET clause

하나의 SET 절을 사용해서 여러 속성을 설정할 수 있음

MATCH (n {name: 'Andy'}) SET n.position = 'Developer', n.surname = 'Taylor'

'DKE > Neo4j' 카테고리의 다른 글

[Neo4j] MATCH (Relationship basics) / 2023.02.06  (0) 2023.02.06
[Neo4j] MATCH (Basic node finding) / 2023.02.06  (0) 2023.02.06
[Neo4j] REMOVE / 2023.02.03  (0) 2023.02.03
[Neo4j] DELETE / 2023.02.03  (0) 2023.02.03
[Neo4j] CREATE / 2023.02.02  (0) 2023.02.02