굵게 키워드 · 기울임 직접 채우는 자리 · [ ] 생략 가능 · ... 반복 가능. 구문 표기 규약을 참고하십시오.
{#remove-description}
## 설명
`REMOVE`는 속성 참조를 받아 그 키를 지웁니다. `SET n.key = NULL`을 평범하게 표기한 것이며, 하는
일도 정확히 같습니다.
- **없는** 키를 지우는 것은 오류가 아닙니다. 그 요소는 그대로 남습니다.
- 참조를 쉼표로 구분해 여러 개 나열할 수 있습니다.
- 참조는 **중첩**될 수 있습니다. `n.key.subkey`는 안쪽 키를 지우고 바깥 맵은 남깁니다.
- `REMOVE`는 들어오는 행마다 한 번 실행되므로, 요소를 여럿 찾는 `MATCH`는 그 전부에서 속성을
떼어 냅니다. 이 절 자체에는 `WHERE`가 없습니다. `MATCH`에서 걸러 내십시오.
- `REMOVE`에는 바인딩된 변수가 필요하며 쿼리를 시작할 수 없습니다. 끝낼 수는 있습니다. 결과를
보려면 [`RETURN`](return.md)을 붙이십시오.
- `REMOVE`는 속성만 지웁니다. 레이블을 지울 수 없고 요소를 지울 수도 없습니다. 요소를 지우는 것은
[`DELETE`](delete.md)입니다.
{#remove-parameters}
## 매개변수
property_reference
: 바인딩된 요소의 속성이며 `variable.key` 형태입니다. `variable.key.subkey`처럼 중첩할 수도
있습니다. 요소 변수만 쓰는 것은 거부됩니다.
{#remove-examples}
## 예제
모든 예제는 [예제 데이터셋](../../get_started/example-dataset.md)에서 실행됩니다.
The last example undoes them.
{#remove-remove-one-property}
### 속성 하나 지우기
```cypher
CREATE (:movie {title: 'Tenet', year: 2020, genre: 'Action', runtime: 150, imax: true});
```
```
UPDATE 1
```
```cypher
MATCH (m:movie {title: 'Tenet'})
REMOVE m.runtime
RETURN properties(m) AS props;
```
```
props
-------------------------------------------------------------------
{"imax": true, "year": 2020, "genre": "Action", "title": "Tenet"}
(1 row)
```
{#remove-remove-several-at-once}
### 여러 개를 한 번에 지우기
```cypher
MATCH (m:movie {title: 'Tenet'})
REMOVE m.imax, m.genre
RETURN properties(m) AS props;
```
```
props
----------------------------------
{"year": 2020, "title": "Tenet"}
(1 row)
```
{#remove-remove-a-key-that-is-not-there}
### 없는 키를 지우기
아무 일도 일어나지 않고, 아무 불평도 없습니다:
```cypher
MATCH (m:movie {title: 'Tenet'})
REMOVE m.nosuchkey
RETURN properties(m) AS props;
```
```
props
----------------------------------
{"year": 2020, "title": "Tenet"}
(1 row)
```
{#remove-remove-a-key-inside-a-nested-map}
### 중첩된 맵 안의 키 지우기
속성 자체가 맵일 수도 있습니다:
```cypher
MATCH (m:movie {title: 'Tenet'})
SET m.crew = {dop: 'Hoyte van Hoytema', editor: 'Jennifer Lame'}
RETURN properties(m) AS props;
```
```
props
---------------------------------------------------------------------------------------------------
{"crew": {"dop": "Hoyte van Hoytema", "editor": "Jennifer Lame"}, "year": 2020, "title": "Tenet"}
(1 row)
```
점을 쓴 참조가 그 안으로 들어가고, 맵의 나머지는 그대로 둡니다:
```cypher
MATCH (m:movie {title: 'Tenet'})
REMOVE m.crew.dop
RETURN properties(m) AS props;
```
```
props
-----------------------------------------------------------------------
{"crew": {"editor": "Jennifer Lame"}, "year": 2020, "title": "Tenet"}
(1 row)
```
바깥 키를 이름으로 부르면 맵 전체가 지워집니다:
```cypher
MATCH (m:movie {title: 'Tenet'})
REMOVE m.crew
RETURN properties(m) AS props;
```
```
props
----------------------------------
{"year": 2020, "title": "Tenet"}
(1 row)
```
{#remove-remove-a-property-from-an-edge}
### 간선에서 속성 지우기
```cypher
MATCH (:person {name: 'Keanu Reeves'})-[r:acted_in]->(:movie {title: 'The Matrix'})
SET r.credited = true
RETURN properties(r) AS props;
```
```
props
-----------------------------------
{"role": "Neo", "credited": true}
(1 row)
```
```cypher
MATCH (:person {name: 'Keanu Reeves'})-[r:acted_in]->(:movie {title: 'The Matrix'})
REMOVE r.credited
RETURN properties(r) AS props;
```
```
props
-----------------
{"role": "Neo"}
(1 row)
```
{#remove-undo-the-examples}
### 예제 되돌리기
```cypher
MATCH (m:movie {title: 'Tenet'}) DETACH DELETE m;
```
```
UPDATE 1
```
{#remove-notes}
## 참고
`REMOVE`는 요소 변수만 쓰는 것을 받지 않습니다. 그런 식으로 전부 떼어 내라고 하면 거부되고, 대신
`SET` 형태를 가리키는 힌트가 나옵니다:
```cypher
MATCH (m:movie {title: 'Tenet'}) REMOVE m RETURN m.title;
```
```
ERROR: cannot set property map to NULL
HINT: use {} instead of NULL to remove all properties
```
`SET m = {}`은 `properties`를 비우고 요소는 남깁니다. `DETACH DELETE m`은 요소를 아예 지웁니다.
{#remove-compatibility}
## 호환성
{#remove-removing-a-label-isoiec-39075-134}
### 레이블 제거 (ISO/IEC 39075 §13.4)
표준의 ``은 요소에서 레이블을 떼어 내며, `REMOVE n:blockbuster` 또는
`REMOVE n IS blockbuster`로 씁니다. AgensGraph는 두 표기 모두 받지 않습니다:
```cypher
MATCH (m:movie {title: 'Tenet'}) REMOVE m:movie RETURN m.title;
```
```
ERROR: syntax error at or near ":"
LINE 1: MATCH (m:movie {title: 'Tenet'}) REMOVE m:movie RETURN m.tit...
^
```
레이블은 요소가 사는 테이블이므로 생성 시점에 정해집니다. 레이블을 추가하는 쪽의 같은 제한은
[`SET`](set.md)을 참고하십시오.
{#remove-see-also}
## 관련 항목
- [`SET`](set.md) — `= NULL`과 `= {}`를 포함한 할당 형태
- [`DELETE`](delete.md) — 속성이 아니라 요소를 지우기
- [`MATCH`](match.md) — 속성을 떼어 낼 요소를 바인딩하기