https://neo4j.com/docs/cypher-manual/current/clauses/set/
* 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)
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 |