What is the behaviour and purpose of the new Cypher operator DETACH DELETE
added in Neo4j 2.3.x?
Asked
Active
Viewed 8,149 times
14
-
2If you are coming here from a search engine to try to find the difference between `detach` and `delete`: `detach` removes the relationships of a node. `delete` deletes a node. You will need to `detach` a node before you `delete` it if it has any relationships. – Mar 06 '17 at 15:19
2 Answers
25
If you want to delete nodes, you need to delete the relationships as well. In previous versions you would need to do:
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n, r
Now you can simply say:
MATCH (n)
DETACH DELETE n

Robert Di Paolo
- 219
- 1
- 11

Brian Underwood
- 10,746
- 1
- 22
- 34
6
I could not comment on Brian's answer so here it is:
This command:
MATCH n
DETACH DELETE n
Gives to following error:
WARNING: Parentheses are required to identify nodes in patterns, i.e. (n) (line 1, column 7 (offset: 6))
"MATCH n"
^
Thus the correct command is:
MATCH (n)
DETACH DELETE n

Arion Krause
- 314
- 4
- 6