UUIDs
The library supports manual and automation generation of UUIDs, which can be stored as properties on nodes.
UUIDs are generated using the java randomUUID utility method, which generates a v4UUID.
UUID may be encoded into String with well-known hexadecimal presentation (32 characters, e.g. 1051af4f-b81d-4a76-8605-ecfb8ef703d5
) or Base64 (22 characters, e.g. vX8dM5XoSe2ldoc/QzMEyw
)
Automatic UUIDs
There are also procedures that handle automatic adding of UUID properties, via the UUID Handler Lifecycle. The UUID handler is a transaction event handler that automatically adds the UUID property to a provided label and for the provided property name. Please check the following documentation to an in-depth description.
Enable apoc.uuid.enabled=true
or apoc.uuid.enabled.[DATABASE_NAME]=true
in $NEO4J_HOME/config/apoc.conf
first.
Configuration value apoc.uuid.format
let you choose between different UUID encoding methods: hex
(default option) or base64
.
Qualified Name | Type | Release |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Config
config |
type |
description |
addToExistingNodes |
Boolean (default: true) |
when installed, for the label provided, adds the UUID to the nodes already existing in your graph |
uuidProperty |
String (default: uuid) |
the name of the UUID field |
UUID Examples
First create a Constraint for the Label and the Property, if you try to add a uuid
an error occured.
CREATE CONSTRAINT FOR (person:Person)
REQUIRE person.uuid IS UNIQUE
Add the uuid
:
CALL apoc.uuid.install('Person')
YIELD label, installed, properties
RETURN label, installed, properties
The result is:
label | installed | properties | batchComputationResult |
---|---|---|---|
"Person" |
true |
{uuidProperty → "uuid", addToExistingNodes → true} |
{wasTerminated → false, count → 10, batches → 1, successes → 1, failedOps → 0, timeTaken → 0, operationErrors → {}, failedBatches → 0} |
The result is Node Person that has 2 properties:

Get all the uuid installed, call the procedure as:
CALL apoc.uuid.list()
YIELD label, installed, properties
RETURN label, installed, properties
The result is:
label | installed | properties |
---|---|---|
"Person" |
true |
{uuidProperty → "uuid", addToExistingNodes → true} |
Remove the uuid installed call the procedure as:
CALL apoc.uuid.remove('Person')
YIELD label, installed, properties
RETURN label, installed, properties
The result is:
label | installed | properties |
---|---|---|
"Person" |
false |
{uuidProperty → "uuid", addToExistingNodes → true} |
You can also remove all the uuid installed call the procedure as:
CALL apoc.uuid.removeAll()
YIELD label, installed, properties
RETURN label, installed, properties
The result is:
label | installed | properties |
---|---|---|
"Person" |
false |
{uuidProperty → "uuid", addToExistingNodes → true} |
Export metadata
To import uuids in another database (for example after a |
Was this page helpful?