Deleting All Nodes and Relationships

Neo4j
Two alternative approaches to deleting all of the nodes and relationships in a Neo4j graph. Handy if you need to discard everything and start again.
Published

15 Sep 2016 03:00

Seems that I am doing this a lot: deleting my entire graph (all nodes and relationships) and rebuilding from scratch. I guess that this is part of the learning process.

A simple graph with a number of nodes and edges.

Route 1: Delete Relationships then Nodes

A relationship is constrained to join a start node to an end node. Every relationship must be associated with at least one node (a relationship may begin and end on the same node). No such constraint exists for nodes. As a result relationships must be deleted before nodes are deleted.

Delete all relationships using either

START r = RELATIONSHIP(*) DELETE r;

or

MATCH ()-[r]-() DELETE r;

Then delete the nodes with

MATCH (n) DELETE n;

Route 2: Detach and Delete

Using DETACH DELETE it’s possible to delete relationships and nodes at once.

MATCH (n) DETACH DELETE n;

Check

Confirm that all nodes and relationships have gone.

MATCH (n) RETURN COUNT(n);
MATCH ()-[r]->() RETURN COUNT(r);

Or, alternatively:

START n = NODE(*) return COUNT(n);  
START r = RELATIONSHIP(*) return COUNT(r);