14

What is the behaviour and purpose of the new Cypher operator DETACH DELETE added in Neo4j 2.3.x?

Taja Jan
  • 942
  • 1
  • 1
  • 11
alexanoid
  • 24,051
  • 54
  • 210
  • 410
  • 2
    If 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 Answers2

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