The MERGE
Clause
To create nodes and relationships in the database, you use the MERGE
clause.
You can use the MERGE
clause to create a pattern in the database.
MERGE
will only create the pattern if it doesn’t already exist.
Create a Movie node
Review this Cypher statement, that uses MERGE
to create a new node:
MERGE (m:Movie {title: "Arthur the King"})
SET m.year = 2024
RETURN m
You should be able to identify that:
-
The
MERGE
clause is used. -
The pattern creates a node with the label
Movie
-(m:Movie)
-
The
title
is included as part of the pattern -{title: "Arthur the King"}
-
A single property
year
is set -SET m.year = 2024
Run the statement to create the new node.
The new node is returned and you can view the set properties.

Create a RATED relationship
Relationships are created by expressing a pattern that connects two nodes.
Review this Cypher statement:
MERGE (m:Movie {title: "Arthur the King"})
MERGE (u:User {name: "Adam"})
MERGE (u)-[r:RATED {rating: 5}]->(m)
RETURN u, r, m
The statement creates:
-
A
Movie
nodeMERGE (m:Movie {title: "Arthur the King"})
. -
A
User
nodeMERGE (u:User {name: "Adam"})
. -
A
RATED
relationship between them, that has arating
property of5
MERGE (u)-[r:RATED {rating: 5}]→(m)
.
Run the statement to create the nodes and relationship.

Merging
MERGE uses the properties in the pattern to identify an existing node or relationship before creating it.
Running this query multiple times would only result in the nodes and relationship being created once.
MERGE
checks to see if the pattern exists before creating it.
Create your own movie
The database is out of date - the latest movie is Solace which was released in September 2016.
Search for the most recent movies
Run this query to return movies order by the most recent release date:
MATCH (m:Movie)
WHERE m.released IS NOT NULL
RETURN m.title AS title, m.url AS url, m.released AS released
ORDER BY released DESC LIMIT 5
title | url | released |
---|---|---|
"Solace" |
"https://themoviedb.org/movie/339527" |
"2016-09-02" |
"Mohenjo Daro" |
"https://themoviedb.org/movie/402672" |
"2016-08-12" |
"Rustom" |
"https://themoviedb.org/movie/392572" |
"2016-08-12" |
"Ben-hur" |
"https://themoviedb.org/movie/271969" |
"2016-08-12" |
"Suicide Squad" |
"https://themoviedb.org/movie/297761" |
"2016-08-05" |
Modify this query to add your favourite movie and a user rating
MERGE (m:Movie {title: "Movie title"})
MERGE (u:User {name: "User name"})
MERGE (u)-[r:RATED {rating: 1}]->(m)
RETURN u, r, m
Next
Summary
In this lesson, you learned how to use the MERGE
clause to create nodes and relationships.
In the next lesson you will learn how to get started with Neo4j.