Procedures

This page provides a complete reference to the Neo4j procedures. Available procedures depend on the type of installation you have:

  • Neo4j Enterprise Edition provides a larger set of procedures than Neo4j Community Edition.

  • Cluster members have procedures that are not available in standalone mode.

To check which procedures are available in your Neo4j DBMS, use the Cypher command SHOW PROCEDURES:

Example 1. List available procedures
SHOW PROCEDURES

Some procedures can only be run by users with Admin privileges. Specifically, either the EXECUTE ADMIN PROCEDURES privilege or both the EXECUTE PROCEDURES and EXECUTE BOOSTED PROCEDURES privileges. These procedures are labeled with Admin Only.

For more information, see the EXECUTE privileges section.

List of procedures

Table 1. Neo4j procedures
Name Community Edition Enterprise Edition Comment

db.cdc.current()

No

Yes

Introduced in 5.17 Beta

db.cdc.earliest()

No

Yes

Introduced in 5.17 Beta

db.cdc.query()

No

Yes

Introduced in 5.17 Beta Admin Only

db.awaitIndex()

Yes

Yes

db.awaitIndexes()

Yes

Yes

db.checkpoint()

No

Yes

db.clearQueryCaches()

Yes

Yes

Admin Only

db.create.setNodeVectorProperty()

Yes

Yes

Introduced in 5.13 Beta

db.create.setRelationshipVectorProperty()

Yes

Yes

Introduced in 5.18 Beta

db.createLabel()

Yes

Yes

db.createProperty()

Yes

Yes

db.createRelationshipType()

Yes

Yes

db.index.fulltext.awaitEventuallyConsistentIndexRefresh()

Yes

Yes

db.index.fulltext.listAvailableAnalyzers()

Yes

Yes

db.index.fulltext.queryNodes()

Yes

Yes

In 4.1, signature changed to db.index.fulltext.queryNodes(indexName :: STRING, queryString :: STRING, options = {} :: MAP) :: (node :: NODE, score :: FLOAT).

db.index.fulltext.queryRelationships()

Yes

Yes

In 4.1, signature changed to db.index.fulltext.queryRelationships(indexName :: STRING, queryString :: STRING, options = {} :: MAP) :: (relationship :: RELATIONSHIP, score :: FLOAT).

db.index.vector.createNodeIndex()

Yes

Yes

Introduced in 5.11 Beta until 5.13 Replaced by: CREATE VECTOR INDEX …​

db.index.vector.queryNodes()

Yes

Yes

Introduced in 5.11 Beta until 5.13

db.index.vector.queryRelationships()

Yes

Yes

Introduced in 5.18

db.info()

Yes

Yes

db.labels()

Yes

Yes

db.listLocks()

No

Yes

Admin Only
In 4.2, signature changed to db.listLocks() :: (mode :: STRING, resourceType :: STRING, resourceId :: INTEGER, transactionId :: STRING).

db.ping()

Yes

Yes

db.prepareForReplanning()

Yes

Yes

Admin Only

db.propertyKeys()

Yes

Yes

db.relationshipTypes()

Yes

Yes

db.resampleIndex()

Yes

Yes

db.resampleOutdatedIndexes()

Yes

Yes

db.schema.nodeTypeProperties()

Yes

Yes

db.schema.relTypeProperties()

Yes

Yes

db.schema.visualization()

Yes

Yes

db.stats.clear()

Yes

Yes

Admin Only

db.stats.collect()

Yes

Yes

Admin Only

db.stats.retrieve()

Yes

Yes

Admin Only

db.stats.retrieveAllAnonymized()

Yes

Yes

Admin Only

db.stats.status()

Yes

Yes

Admin Only

db.stats.stop()

Yes

Yes

Admin Only

dbms.checkConfigValue()

No

Yes

Introduced in 5.0 Admin Only

dbms.cluster.setAutomaticallyEnableFreeServers()

No

Yes

Before Neo4j 5.23, the procedure can be run only with the Admin privileges.

dbms.cluster.checkConnectivity()

No

Yes

Admin Only

dbms.cluster.cordonServer()

No

Yes

Before Neo4j 5.23, the procedure can be run only with the Admin privileges.

dbms.cluster.protocols()

No

Yes

dbms.cluster.secondaryReplicationDisable()

No

Yes

Introduced in 5.6 Admin Only

dbms.cluster.switchDiscoveryServiceVersion()

No

Yes

Introduced in 5.22 Admin Only

dbms.cluster.showParallelDiscoveryState()

No

Yes

Introduced in 5.22 Admin Only

dbms.cluster.moveToNextDiscoveryVersion()

No

Yes

Introduced in 5.26 Admin Only

dbms.cluster.deallocateDatabaseFromServer()

No

Yes

Introduced in 5.23 SERVER MANAGEMENT privilege only

dbms.cluster.deallocateDatabaseFromServers()

No

Yes

Introduced in 5.23 SERVER MANAGEMENT privilege only

dbms.cluster.deallocateNumberOfDatabases()

No

Yes

Introduced in 5.23 SERVER MANAGEMENT privilege only

dbms.cluster.reallocateDatabase()

No

Yes

Introduced in 5.23 SERVER MANAGEMENT privilege only

dbms.cluster.reallocateNumberOfDatabases()

No

Yes

Introduced in 5.23 SERVER MANAGEMENT privilege only

dbms.cluster.recreateDatabase()

No

Yes

Introduced in 5.24

dbms.cluster.statusCheck()

No

Yes

Introduced in 5.24 Admin Only

dbms.components()

Yes

Yes

dbms.info()

Yes

Yes

dbms.killConnection()

Yes

Yes

dbms.killConnections()

Yes

Yes

dbms.listActiveLocks()

Yes

Yes

dbms.listCapabilities()

Yes

Yes

dbms.listConfig()

Yes

Yes

Admin Only

dbms.listConnections()

Yes

Yes

dbms.listPools()

No

Yes

dbms.quarantineDatabase()

No

Yes

Admin Only

dbms.queryJmx()

Yes

Yes

dbms.routing.getRoutingTable()

Yes

Yes

dbms.scheduler.failedJobs()

No

Yes

Admin Only

dbms.scheduler.groups()

No

Yes

Admin Only

dbms.scheduler.jobs()

No

Yes

Admin Only

dbms.security.clearAuthCache()

No

Yes

Admin Only

dbms.setConfigValue()

No

Yes

Admin Only Not available on Aura

dbms.setDatabaseAllocator()

No

Yes

Admin Only

dbms.setDefaultAllocationNumbers()

No

Yes

Admin Only

dbms.setDefaultDatabase()

No

Yes

Admin Only

dbms.showCurrentUser()

Yes

Yes

dbms.showTopologyGraphConfig()

No

Yes

Admin Only

genai.vector.listEncodingProviders()

Yes

Yes

Introduced in 5.19

genai.vector.encodeBatch()

Yes

Yes

Introduced in 5.17

tx.getMetaData()

Yes

Yes

tx.setMetaData()

Yes

Yes

List of deprecated procedures

Table 2. Deprecated Neo4j procedures
Name Community Edition Enterprise Edition Comment

cdc.current()

No

Yes

Introduced in 5.13 Beta Deprecated in 5.17 Replaced by: db.cdc.current()

cdc.earliest()

No

Yes

Introduced in 5.13 Beta Deprecated in 5.17 Replaced by: db.cdc.earliest()

cdc.query()

No

Yes

Introduced in 5.13 Beta Admin Only Deprecated in 5.17 Replaced by: db.cdc.query()

db.create.setVectorProperty()

Yes

Yes

Introduced in 5.11 Beta Deprecated in 5.13 Replaced by: db.create.setNodeVectorProperty()

dbms.cluster.readReplicaToggle()

No

Yes

Admin Only Deprecated in 5.6.
Replaced by: dbms.cluster.secondaryReplicationDisable().

dbms.cluster.routing.getRoutingTable()

Yes

Yes

Deprecated in 5.21.
Replaced by: dbms.routing.getRoutingTable().

dbms.cluster.uncordonServer()

No

Yes

Deprecated in 5.23.
Before Neo4j 5.23, the procedure can be run only with the Admin privileges.
Replaced by ENABLE SERVER.

dbms.setDatabaseAllocator()

No

Yes

Admin Only Deprecated in 5.23

dbms.upgrade()

Yes

Yes

Admin Only Deprecated in 5.9

dbms.upgradeStatus()

Yes

Yes

Admin Only Deprecated in 5.9

List of removed procedures

Table 3. Removed Neo4j procedures in 5.0
Name Community Edition Enterprise Edition Replaced by

db.constraints()

Yes

Yes

SHOW CONSTRAINTS

db.createIndex()

Yes

Yes

CREATE INDEX

db.createNodeKey()

No

Yes

CREATE CONSTRAINT …​ IS NODE KEY

db.createUniquePropertyConstraint()

Yes

Yes

CREATE CONSTRAINT …​ IS UNIQUE

db.indexes()

Yes

Yes

SHOW INDEXES

db.indexDetails()

Yes

Yes

SHOW INDEXES YIELD*

db.index.fulltext.createNodeIndex()

Yes

Yes

CREATE FULLTEXT INDEX …​

db.index.fulltext.createRelationshipIndex()

Yes

Yes

CREATE FULLTEXT INDEX …​

db.index.fulltext.drop()

Yes

Yes

DROP INDEX …​

db.schemaStatements()

Yes

Yes

SHOW INDEXES YIELD * and SHOW CONSTRAINTS YIELD *

dbms.cluster.overview()

No

Yes

SHOW SERVERS

dbms.cluster.quarantineDatabase()

No

Yes

dbms.quarantineDatabase()

dbms.cluster.role()

No

Yes

SHOW DATABASES

dbms.cluster.setDefaultDatabase()

No

Yes

dbms.setDefaultDatabase

dbms.database.state()

Yes

Yes

SHOW DATABASES

dbms.functions()

Yes

Yes

SHOW FUNCTIONS

dbms.killQueries()

Yes

Yes

TERMINATE TRANSACTIONS

dbms.killQuery()

Yes

Yes

TERMINATE TRANSACTIONS

dbms.killTransaction()

Yes

Yes

TERMINATE TRANSACTIONS

dbms.killTransactions()

Yes

Yes

TERMINATE TRANSACTIONS

dbms.listQueries()

Yes

Yes

SHOW TRANSACTIONS

dbms.listTransactions()

Yes

Yes

SHOW TRANSACTIONS

dbms.procedures()

No

Yes

SHOW PROCEDURES

dbms.security.activateUser()

No

Yes

ALTER USER

dbms.security.addRoleToUser()

No

Yes

GRANT ROLE TO USER

dbms.security.changePassword()

Yes

Yes

ALTER CURRENT USER SET PASSWORD

dbms.security.changeUserPassword()

No

Yes

ALTER USER

dbms.security.createRole()

No

Yes

CREATE ROLE

dbms.security.createUser()

Yes

Yes

CREATE USER

dbms.security.deleteRole()

No

Yes

DROP ROLE

dbms.security.deleteUser()

Yes

Yes

DROP USER

dbms.security.listRoles()

Yes

Yes

SHOW ROLES

dbms.security.listRolesForUser()

No

Yes

SHOW USERS

dbms.security.listUsers()

Yes

Yes

SHOW USERS

dbms.security.listUsersForRole()

No

Yes

SHOW ROLES WITH USERS

dbms.security.removeRoleFromUser()

No

Yes

REVOKE ROLE FROM USER

dbms.security.suspendUser()

No

Yes

ALTER USER

Procedure descriptions

Table 4. cdc.current()

Description

Returns the current change identifier that can be used to stream changes from.

Signature

cdc.current() :: (id :: STRING)

Mode

READ

Replaced by

Table 5. cdc.earliest()

Description

Returns the earliest change identifier that can be used to stream changes from.

Signature

cdc.earliest() :: (id :: STRING)

Mode

READ

Replaced by

Table 6. cdc.query()

Description

Query changes happened from the provided change identifier.

Signature

cdc.query(from = :: STRING, selectors = [] :: LIST<MAP>) :: (id :: STRING, txId :: INTEGER, seq :: INTEGER, metadata :: MAP, event :: MAP)

Mode

READ

Replaced by

Table 7. db.cdc.current()

Description

Returns the current change identifier that can be used to stream changes from.

Signature

db.cdc.current() :: (id :: STRING)

Mode

READ

Table 8. db.cdc.earliest()

Description

Returns the earliest change identifier that can be used to stream changes from.

Signature

db.cdc.earliest() :: (id :: STRING)

Mode

READ

Table 9. db.cdc.query()

Description

Query changes happened from the provided change identifier.

Signature

db.cdc.query(from = :: STRING, selectors = [] :: LIST<MAP>) :: (id :: STRING, txId :: INTEGER, seq :: INTEGER, metadata :: MAP, event :: MAP)

Mode

READ

Table 10. db.awaitIndex()

Description

Wait for an index to come online (for example: CALL db.awaitIndex("MyIndex", 300)).

Signature

db.awaitIndex(indexName :: STRING, timeOutSeconds = 300 :: INTEGER)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 11. db.awaitIndexes()

Description

Wait for all indexes to come online (for example: CALL db.awaitIndexes(300)).

Signature

db.awaitIndexes(timeOutSeconds = 300 :: INTEGER)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 12. db.checkpoint()

Description

Initiate and wait for a new check point, or wait any already on-going check point to complete.

Note that this temporarily disables the db.checkpoint.iops.limit setting in order to make the check point complete faster. This might cause transaction throughput to degrade slightly, due to increased IO load.

Signature

db.checkpoint() :: (success :: BOOLEAN, message :: STRING)

Mode

DBMS

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 13. db.clearQueryCaches()

Description

Clears all query caches.

Signature

db.clearQueryCaches() :: (value :: STRING)

Mode

DBMS

Table 14. db.create.setNodeVectorProperty()

Description

Set a vector property on a given node in a more space efficient representation than Cypher’s SET.

Signature

db.create.setNodeVectorProperty(node :: NODE, key :: STRING, vector :: ANY)

Mode

WRITE

Known issue

Procedure signatures from SHOW PROCEDURES renders the vector arguments with a type of ANY rather than the semantically correct type of LIST<INTEGER | FLOAT>. The types are still enforced as LIST<INTEGER | FLOAT>.

Table 15. db.create.setRelationshipVectorProperty()

Description

Set a vector property on a given relationship in a more space efficient representation than Cypher’s SET.

Signature

db.create.setRelationshipVectorProperty(relationship :: RELATIONSHIP, key :: STRING, vector :: ANY)

Mode

WRITE

Known issue

Procedure signatures from SHOW PROCEDURES renders the vector arguments with a type of ANY rather than the semantically correct type of LIST<INTEGER | FLOAT>. The types are still enforced as LIST<INTEGER | FLOAT>.

Table 16. db.create.setVectorProperty()

Description

Set a vector property on a given node in a more space efficient representation than Cypher’s SET.

Signature

db.create.setVectorProperty(node :: NODE, key :: STRING, vector :: ANY) :: (node :: NODE)

Mode

WRITE

Replaced by

Known issue

Procedure signatures from SHOW PROCEDURES renders the vector arguments with a type of ANY rather than the semantically correct type of LIST<INTEGER | FLOAT>. The types are still enforced as LIST<INTEGER | FLOAT>.

Table 17. db.createLabel()

Description

Create a label

Signature

db.createLabel(newLabel :: STRING)

Mode

WRITE

Table 18. db.createProperty()

Description

Create a Property

Signature

db.createProperty(newProperty :: STRING)

Mode

WRITE

Table 19. db.createRelationshipType()

Description

Create a RelationshipType

Signature

db.createRelationshipType(newRelationshipType :: STRING)

Mode

WRITE

Table 20. db.index.fulltext.awaitEventuallyConsistentIndexRefresh()

Description

Wait for the updates from recently committed transactions to be applied to any eventually-consistent full-text indexes.

Signature

db.index.fulltext.awaitEventuallyConsistentIndexRefresh()

Mode

READ

Table 21. db.index.fulltext.listAvailableAnalyzers()

Description

List the available analyzers that the full-text indexes can be configured with.

Signature

db.index.fulltext.listAvailableAnalyzers() :: (analyzer :: STRING, description :: STRING, stopwords :: LIST<STRING>)

Mode

READ

Table 22. db.index.fulltext.queryNodes()

Description

Query the given full-text index. Returns the matching nodes and their Lucene query score, ordered by score. Valid key: value pairs for the options map are:

  • skip: <number> — to skip the top N results.

  • limit: <number> — to limit the number of results returned.

  • analyzer: <string> — to use the specified analyzer as a search analyzer for this query.

The options map and any of the keys are optional. An example of the options map: {skip: 30, limit: 10, analyzer: 'whitespace'}

Signature

db.index.fulltext.queryNodes(indexName :: STRING, queryString :: STRING, options = {} :: MAP) :: (node :: NODE, score :: FLOAT)

Mode

READ

Table 23. db.index.fulltext.queryRelationships()

Description

Query the given full-text index. Returns the matching relationships and their Lucene query score, ordered by score. Valid key: value pairs for the options map are:

  • skip: <number> — to skip the top N results.

  • limit: <number> — to limit the number of results returned.

  • analyzer: <string> — to use the specified analyzer as a search analyzer for this query.

The options map and any of the keys are optional. An example of the options map: {skip: 30, limit: 10, analyzer: 'whitespace'}

Signature

db.index.fulltext.queryRelationships(indexName :: STRING, queryString :: STRING, options = {} :: MAP) :: (relationship :: RELATIONSHIP, score :: FLOAT)

Mode

READ

Table 24. db.index.vector.createNodeIndex() Beta until 5.13

Description

Create a named node vector index for the specified label and property with the given vector dimensionality using either the EUCLIDEAN or COSINE similarity function. Both similarity functions are case-insensitive. Use the db.index.vector.queryNodes procedure to query the named index.

Signature

db.index.vector.createNodeIndex(indexName :: STRING, label :: STRING, propertyKey :: STRING, vectorDimension :: INTEGER, vectorSimilarityFunction :: STRING)

Mode

SCHEMA

Replaced by

CREATE VECTOR INDEX …​

Table 25. db.index.vector.queryNodes() Beta until 5.13

Description

Query the given vector index. Returns requested number of nearest neighbors to the provided query vector, and their similarity score to that query vector, based on the configured similarity function for the index. The similarity score is a value between [0, 1]; where 0 indicates least similar, 1 most similar.

Signature

db.index.vector.queryNodes(indexName :: STRING, numberOfNearestNeighbours :: INTEGER, query :: ANY) :: (node :: NODE, score :: FLOAT)

Mode

READ

Known issue

Procedure signatures from SHOW PROCEDURES renders the vector arguments with a type of ANY rather than the semantically correct type of LIST<INTEGER | FLOAT>. The types are still enforced as LIST<INTEGER | FLOAT>.

Table 26. db.index.vector.queryRelationships()

Description

Query the given relationship vector index. Returns requested number of nearest neighbors to the provided query vector, and their similarity score to that query vector, based on the configured similarity function for the index. The similarity score is a value between [0, 1]; where 0 indicates least similar, 1 most similar.

Signature

db.index.vector.queryRelationships(indexName :: STRING, numberOfNearestNeighbours :: INTEGER, query :: ANY) :: (relationship :: RELATIONSHIP, score :: FLOAT)

Mode

READ

Known issue

Procedure signatures from SHOW PROCEDURES renders the vector arguments with a type of ANY rather than the semantically correct type of LIST<INTEGER | FLOAT>. The types are still enforced as LIST<INTEGER | FLOAT>.

Table 27. db.info()

Description

Provides information regarding the database.

Signature

db.info() :: (id :: STRING, name :: STRING, creationDate :: STRING)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 28. db.labels()

Description

List all labels attached to nodes within a database according to the user’s access rights. The procedure returns empty results if the user is not authorized to view those labels.

Signature

db.labels() :: (label :: STRING)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 29. db.listLocks()

Description

List all locks at this database.

Signature

db.listLocks() :: (mode :: STRING, resourceType :: STRING, resourceId :: INTEGER, transactionId :: STRING)

Mode

DBMS

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 30. db.ping()

Description

This procedure can be used by client side tooling to test whether they are correctly connected to a database. The procedure is available in all databases and always returns true. A faulty connection can be detected by not being able to call this procedure.

Signature

db.ping() :: (success :: BOOLEAN)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 31. db.prepareForReplanning()

Description

Triggers an index resample and waits for it to complete, and after that clears query caches. After this procedure has finished queries will be planned using the latest database statistics.

Signature

db.prepareForReplanning(timeOutSeconds = 300 :: INTEGER)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 32. db.propertyKeys()

Description

List all property keys in the database.

Signature

db.propertyKeys() :: (propertyKey :: STRING)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 33. db.relationshipTypes()

Description

List all types attached to relationships within a database according to the user’s access rights. The procedure returns empty results if the user is not authorized to view those relationship types.

Signature

db.relationshipTypes() :: (relationshipType :: STRING)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 34. db.resampleIndex()

Description

Schedule resampling of an index (for example: CALL db.resampleIndex("MyIndex")).

Signature

db.resampleIndex(indexName :: STRING)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 35. db.resampleOutdatedIndexes()

Description

Schedule resampling of all outdated indexes.

Signature

db.resampleOutdatedIndexes()

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 36. db.schema.nodeTypeProperties()

Description

Show the derived property schema of the nodes in tabular form.

Signature

db.schema.nodeTypeProperties() :: (nodeType :: STRING, nodeLabels :: LIST<STRING>, propertyName :: STRING, propertyTypes :: LIST<STRING>, mandatory :: BOOLEAN)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 37. db.schema.relTypeProperties()

Description

Show the derived property schema of the relationships in tabular form.

Signature

db.schema.relTypeProperties() :: (relType :: STRING, propertyName :: STRING, propertyTypes :: LIST<STRING>, mandatory :: BOOLEAN)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 38. db.schema.visualization()

Description

Visualizes the schema of the data based on available statistics. A new node is returned for each label. The properties represented on the node include: name (label name), indexes (list of indexes), and constraints (list of constraints). A relationship of a given type is returned for all possible combinations of start and end nodes. The properties represented on the relationship include: name (type name). Note that this may include additional relationships that do not exist in the data due to the information available in the count store.

Signature

db.schema.visualization() :: (nodes :: LIST<NODE>, relationships :: LIST<RELATIONSHIP>)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 39. db.stats.clear()

Description

Clear collected data of a given data section.

Valid sections are 'QUERIES'

Signature

db.stats.clear(section :: STRING) :: (section :: STRING, success :: BOOLEAN, message :: STRING)

Mode

READ

Table 40. db.stats.collect()

Description

Start data collection of a given data section.

Valid sections are 'QUERIES'

Signature

db.stats.collect(section :: STRING, config = {} :: MAP) :: (section :: STRING, success :: BOOLEAN, message :: STRING)

Mode

READ

Table 41. db.stats.retrieve()

Description

Retrieve statistical data about the current database.

Valid sections are 'GRAPH COUNTS', 'TOKENS', 'QUERIES', 'META'

Signature

db.stats.retrieve(section :: STRING, config = {} :: MAP) :: (section :: STRING, data :: MAP)

Mode

READ

Table 42. db.stats.retrieveAllAnonymized()

Description

Retrieve all available statistical data about the current database, in an anonymized form.

Signature

db.stats.retrieveAllAnonymized(graphToken :: STRING, config = {} :: MAP) :: (section :: STRING, data :: MAP)

Mode

READ

Table 43. db.stats.status()

Description

Retrieve the status of all available collector daemons, for this database.

Signature

db.stats.status() :: (section :: STRING, status :: STRING, data :: MAP)

Mode

READ

Table 44. db.stats.stop()

Description

Stop data collection of a given data section.

Valid sections are 'QUERIES'

Signature

db.stats.stop(section :: STRING) :: (section :: STRING, success :: BOOLEAN, message :: STRING)

Mode

READ

Table 45. dbms.checkConfigValue()

Description

This procedure provides feedback about the validity of a setting value. It does not change the setting.

The procedure returns:

  • valid: if the value is valid. A valid value for a non-dynamic setting requires a restart.

  • message: a message describing the reason for the invalidity. The message is empty if the value is valid and the setting is dynamic.

Signature

dbms.checkConfigValue(setting :: STRING, value :: STRING) :: (valid :: BOOLEAN, message :: STRING)

Mode

DBMS

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 46. dbms.cluster.setAutomaticallyEnableFreeServers()

Description

With this method you can set whether free servers are automatically enabled.

Signature

dbms.cluster.setAutomaticallyEnableFreeServers(autoEnable :: BOOLEAN)

Mode

WRITE

Before Neo4j 5.23, the procedure dbms.cluster.setAutomaticallyEnableFreeServers() can be run only by users with the Admin privileges. Since Neo4j 5.23, it can be run with the SERVER MANAGEMENT privilege. It will still run with the Admin privilege, but that should be considered deprecated.

Table 47. dbms.cluster.checkConnectivity()

Description

Check the connectivity of this instance to other cluster members. Not all ports are relevant to all members. Valid values for 'port-name' are: [CLUSTER, RAFT].

Signature

dbms.cluster.checkConnectivity(port-name = null :: STRING, server = null :: STRING) :: (serverId :: STRING, name :: STRING, address :: STRING, mode-constraint :: STRING, port-name :: STRING, port-address :: STRING, result :: STRING)

Mode

DBMS

Table 48. dbms.cluster.cordonServer()

Description

Mark a server in the topology as not suitable for new allocations. It will not force current allocations off the server. This is useful when deallocating databases when you have multiple unavailable servers.

Signature

dbms.cluster.cordonServer(server :: STRING)

Mode

WRITE

Before Neo4j 5.23, the procedure dbms.cluster.cordonServer() can be run only by users with Admin privileges. Since Neo4j 5.23, it can be run with the SERVER MANAGEMENT privilege. It will still run with the Admin privilege, but that should be considered deprecated.

Table 49. dbms.cluster.routing.getRoutingTable()

Description

Returns the advertised bolt capable endpoints for a given database, divided by each endpoint’s capabilities. For example, an endpoint may serve read queries, write queries, and/or future getRoutingTable requests.

Signature

dbms.cluster.routing.getRoutingTable(context :: MAP, database = null :: STRING) :: (ttl :: INTEGER, servers :: LIST<MAP>)

Mode

DBMS

Table 50. dbms.cluster.protocols()

Description

Overview of installed protocols.

Signature

dbms.cluster.protocols() :: (orientation :: STRING, remoteAddress :: STRING, applicationProtocol :: STRING, applicationProtocolVersion :: INTEGER, modifierProtocols :: STRING)

Mode

DBMS

Table 51. dbms.cluster.readReplicaToggle()

Description

The toggle can pause or resume read replica (deprecated in favor of dbms.cluster.secondaryReplicationDisable)

Signature

dbms.cluster.readReplicaToggle(databaseName :: STRING, pause :: BOOLEAN) :: (state :: STRING)

Mode

DBMS

Replaced by

What is it for?

You can perform a point-in-time backup, as the backup will contain only the transactions up to the point where the transaction pulling was paused. Follow these steps to do so:

  1. Connect directly to the server hosting the database in secondary mode. (Neo4j Driver use bolt:// or use the HTTP API).

  2. Pause transaction pulling for the specified database.

  3. Back up the database, see Back up an online database.

If connected directly to a server hosting a database in secondary mode, Data Scientists can execute analysis on a specific database that is paused, the data will not unexpectedly change while performing the analysis.

This procedure can only be executed on a database that runs in a secondary role on the connected server.

Pause transaction pulling for database neo4j
CALL dbms.cluster.readReplicaToggle("neo4j", true)
Resume transaction pulling for database neo4j
CALL dbms.cluster.readReplicaToggle("neo4j", false)
Table 52. dbms.cluster.secondaryReplicationDisable()

Description

The toggle can pause or resume the secondary replication process.

Signature

dbms.cluster.secondaryReplicationDisable(databaseName :: STRING, pause :: BOOLEAN) :: (state :: STRING)

Mode

DBMS

What is it for?

You can perform a point-in-time backup, as the backup will contain only the transactions up to the point where the transaction pulling was paused. Follow these steps to do so:

  1. Connect directly to the server hosting the database in secondary mode. (Neo4j Driver use bolt:// or use the HTTP API).

  2. Pause transaction pulling for the specified database.

  3. Back up the database, see Back up an online database.

If connected directly to a server hosting a database in secondary mode, Data Scientists can execute analysis on a specific database that is paused, the data will not unexpectedly change while performing the analysis.

This procedure can only be executed on a database that runs in a secondary role on the connected server.

Pause transaction pulling for database neo4j
CALL dbms.cluster.secondaryReplicationDisable("neo4j", true)
Resume transaction pulling for database neo4j
CALL dbms.cluster.secondaryReplicationDisable("neo4j", false)
Table 53. dbms.cluster.uncordonServer()

Description

Remove the cordon on a server, returning it to 'enabled'.

Signature

dbms.cluster.uncordonServer(server :: STRING)

Mode

WRITE

Replaced by

Before Neo4j 5.23, the procedure dbms.cluster.uncordonServer() can be run only by users with Admin privileges. Since Neo4j 5.23, it can be run with the SERVER MANAGEMENT privilege. It will still run with the Admin privilege, but that should be considered deprecated.

Table 54. dbms.cluster.switchDiscoveryServiceVersion()

Description

Allows you to select which discovery service should be started. Possible values are:

  • V1_ONLY — it runs only discovery service v1.

  • V1_OVER_V2 — it runs both Discovery Service V1 and Discovery Service V2, where V1 is the main service and V2 runs in the background.

  • V2_OVER_V1 — it runs both Discovery Service V1 and Discovery Service V2, where V2 is the main service and V1 runs in the background.

  • V2_ONLY — it runs only discovery service v2.

Signature

dbms.cluster.switchDiscoveryServiceVersion(mode :: STRING)

Mode

DBMS

Table 55. dbms.cluster.showParallelDiscoveryState()

Description

Compare the states of Discovery service V1 and Discovery service V2.

Signature

dbms.cluster.showParallelDiscoveryState() :: (mode :: STRING, stateComparison :: STRING, v1ServerCount :: STRING, v2ServerCount :: STRING)

Mode

DBMS

Table 56. dbms.cluster.moveToNextDiscoveryVersion()

Description

The procedure triggers a switch to the next discovery service version for all known members of the cluster (as listed in the system database and discovery). For example, if the current member’s discovery version is V1_ONLY, it will switch all members to V1_OVER_V2. In case of failure, the user must manually resolve the issue.

Signature

dbms.cluster.moveToNextDiscoveryVersion()

Mode

DBMS

Table 57. dbms.cluster.deallocateDatabaseFromServer()

Description

Deallocate a specific user database from a specific server.

Signature

dbms.cluster.deallocateDatabaseFromServer(server :: STRING, database :: STRING, dryrun = false :: BOOLEAN) :: (database :: STRING, fromServerName :: STRING, fromServerId :: STRING, toServerName :: STRING, toServerId :: STRING, mode :: STRING)

Mode

WRITE

This procedure requires the SERVER MANAGEMENT privilege.

Table 58. dbms.cluster.deallocateDatabaseFromServers()

Description

Deallocate a specific user database from a list of servers.

Signature

dbms.cluster.deallocateDatabaseFromServers(servers :: LIST<STRING>, database :: STRING, dryrun = false :: BOOLEAN) :: (database :: STRING, fromServerName :: STRING, fromServerId :: STRING, toServerName :: STRING, toServerId :: STRING, mode :: STRING)

Mode

WRITE

This procedure requires the SERVER MANAGEMENT privilege.

Table 59. dbms.cluster.deallocateNumberOfDatabases()

Description

Deallocate a number of user databases from a specific server.

Signature

dbms.cluster.deallocateNumberOfDatabases(server :: STRING, number :: INTEGER, dryrun = false :: BOOLEAN) :: (database :: STRING, fromServerName :: STRING, fromServerId :: STRING, toServerName :: STRING, toServerId :: STRING, mode :: STRING)

Mode

WRITE

This procedure requires the SERVER MANAGEMENT privilege.

Table 60. dbms.cluster.reallocateDatabase()

Description

Reallocate a specific database.

Signature

dbms.cluster.reallocateDatabase(database :: STRING, dryrun = false :: BOOLEAN) :: (database :: STRING, fromServerName :: STRING, fromServerId :: STRING, toServerName :: STRING, toServerId :: STRING, mode :: STRING)

Mode

WRITE

This procedure requires the SERVER MANAGEMENT privilege.

Table 61. dbms.cluster.reallocateNumberOfDatabases()

Description

Reallocate a specified number of user databases.

Signature

dbms.cluster.reallocateNumberOfDatabases(number :: INTEGER, dryrun = false :: BOOLEAN) :: (database :: STRING, fromServerName :: STRING, fromServerId :: STRING, toServerName :: STRING, toServerId :: STRING, mode :: STRING)

Mode

WRITE

This procedure requires the SERVER MANAGEMENT privilege.

Table 62. dbms.cluster.recreateDatabase()

Description

Recreates a database while keeping all RBAC settings. The procedure initiates a process, which when complete, will have synchronized and started all database instances within the cluster.

Signature

dbms.cluster.recreateDatabase(database :: STRING, options = {} :: MAP)

Mode

WRITE

Table 63. dbms.cluster.statusCheck()

Description

Performs a rafted status check.

Signature

dbms.cluster.statusCheck(databases :: LIST<STRING>, timeoutMilliseconds = null :: INTEGER) :: (database :: STRING, serverId :: STRING, serverName :: STRING, address :: STRING, replicationSuccessful :: BOOLEAN, memberStatus :: STRING, recognisedLeader :: STRING, recognisedLeaderTerm :: INTEGER, requester :: BOOLEAN, error :: STRING)

Mode

DBMS

Table 64. dbms.components()

Description

List DBMS components and their versions.

Signature

dbms.components() :: (name :: STRING, versions :: LIST<STRING>, edition :: STRING)

Mode

DBMS

Table 65. dbms.info()

Description

Provides information regarding the DBMS.

Signature

dbms.info() :: (id :: STRING, name :: STRING, creationDate :: STRING)

Mode

DBMS

Table 66. dbms.killConnection()

Description

Kill network connection with the given connection id.

Signature

dbms.killConnection(id :: STRING) :: (connectionId :: STRING, username :: STRING, message :: STRING)

Mode

DBMS

Table 67. dbms.killConnections()

Description

Kill all network connections with the given connection ids.

Signature

dbms.killConnections(ids :: LIST<STRING>) :: (connectionId :: STRING, username :: STRING, message :: STRING)

Mode

DBMS

Table 68. dbms.listActiveLocks()

Description

List the active lock requests granted for the transaction executing the query with the given query id.

Signature

dbms.listActiveLocks(queryId :: STRING) :: (mode :: STRING, resourceType :: STRING, resourceId :: INTEGER)

Mode

DBMS

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 69. dbms.listCapabilities()

Description

List capabilities.

Signature

dbms.listCapabilities() :: (name :: STRING, description :: STRING, value :: ANY)

Mode

DBMS

Table 70. dbms.listConfig()

Description

List the currently active configuration settings of Neo4j.

Signature

dbms.listConfig(searchString = :: STRING) :: (name :: STRING, description :: STRING, value :: STRING, dynamic :: BOOLEAN, defaultValue :: STRING, startupValue :: STRING, explicitlySet :: BOOLEAN, validValues :: STRING)

Mode

DBMS

Table 71. dbms.listConnections()

Description

List all accepted network connections at this instance that are visible to the user.

Signature

dbms.listConnections() :: (connectionId :: STRING, connectTime :: STRING, connector :: STRING, username :: STRING, userAgent :: STRING, serverAddress :: STRING, clientAddress :: STRING)

Mode

DBMS

Table 72. dbms.listPools()

Description

List all memory pools, including sub pools, currently registered at this instance that are visible to the user.

Signature

dbms.listPools() :: (pool :: STRING, databaseName :: STRING, heapMemoryUsed :: STRING, heapMemoryUsedBytes :: STRING, nativeMemoryUsed :: STRING, nativeMemoryUsedBytes :: STRING, freeMemory :: STRING, freeMemoryBytes :: STRING, totalPoolMemory :: STRING, totalPoolMemoryBytes :: STRING)

Mode

DBMS

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 73. dbms.quarantineDatabase()

Description

Place a database into quarantine or remove it from it.

Signature

dbms.quarantineDatabase(databaseName :: STRING, setStatus :: BOOLEAN, reason = No reason given :: STRING) :: (databaseName :: STRING, quarantined :: BOOLEAN, result :: STRING)

Mode

DBMS

Table 74. dbms.queryJmx()

Description

Query JMX management data by domain and name. For instance, use : to find all JMX beans.

Signature

dbms.queryJmx(query :: STRING) :: (name :: STRING, description :: STRING, attributes :: MAP)

Mode

DBMS

Table 75. dbms.routing.getRoutingTable()

Description

Returns the advertised bolt capable endpoints for a given database, divided by each endpoint’s capabilities. For example an endpoint may serve read queries, write queries and/or future getRoutingTable requests.

Signature

dbms.routing.getRoutingTable(context :: MAP, database = null :: STRING) :: (ttl :: INTEGER, servers :: LIST<MAP>)

Mode

DBMS

Table 76. dbms.setDatabaseAllocator()

Description

With this method, you can set the allocator that is responsible for selecting servers for hosting databases.

Signature

dbms.setDatabaseAllocator(allocator :: STRING)

Mode

WRITE

Table 77. dbms.setDefaultAllocationNumbers()

Description

With this method you can set the default number of primaries and secondaries.

Signature

dbms.setDefaultAllocationNumbers(primaries :: INTEGER, secondaries :: INTEGER)

Mode

WRITE

Table 78. dbms.setDefaultDatabase()

Description

Change the default database to the provided value. The database must exist and the old default database must be stopped.

Signature

dbms.setDefaultDatabase(databaseName :: STRING) :: (result :: STRING)

Mode

WRITE

Table 79. dbms.scheduler.failedJobs()

Description

List failed job runs. There is a limit for amount of historical data.

Signature

dbms.scheduler.failedJobs() :: (jobId :: STRING, group :: STRING, database :: STRING, submitter :: STRING, description :: STRING, type :: STRING, submitted :: STRING, executionStart :: STRING, failureTime :: STRING, failureDescription :: STRING)

Mode

DBMS

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 80. dbms.scheduler.groups()

Description

List the job groups that are active in the database internal job scheduler.

Signature

dbms.scheduler.groups() :: (group :: STRING, threads :: INTEGER)

Mode

DBMS

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 81. dbms.scheduler.jobs()

Description

List all jobs that are active in the database internal job scheduler.

Signature

dbms.scheduler.jobs() :: (jobId :: STRING, group :: STRING, submitted :: STRING, database :: STRING, submitter :: STRING, description :: STRING, type :: STRING, scheduledAt :: STRING, period :: STRING, state :: STRING, currentStateDescription :: STRING)

Mode

DBMS

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 82. dbms.security.clearAuthCache()

Description

Clears authentication and authorization cache.

Signature

dbms.security.clearAuthCache()

Mode

DBMS

Table 83. dbms.setConfigValue()

Description

Update a given setting value. Passing an empty value results in removing the configured value and falling back to the default value. Changes do not persist and are lost if the server is restarted. In a clustered environment, dbms.setConfigValue affects only the cluster member it is run against.

Signature

dbms.setConfigValue(setting :: STRING, value :: STRING)

Mode

DBMS

Table 84. dbms.showCurrentUser()

Description

Show the current user.

Signature

dbms.showCurrentUser() :: (username :: STRING, roles :: LIST<STRING>, flags :: LIST<STRING>)

Mode

DBMS

Table 85. dbms.showTopologyGraphConfig()

Description

With this method the configuration of the Topology Graph can be displayed.

Signature

dbms.showTopologyGraphConfig() :: (allocator :: STRING, defaultPrimariesCount :: INTEGER, defaultSecondariesCount :: INTEGER, defaultDatabase :: STRING, autoEnableFreeServers :: BOOLEAN)

Mode

READ

Table 86. dbms.upgrade()

Description

Upgrade the system database schema if it is not the current schema.

Signature

dbms.upgrade() :: (status :: STRING, upgradeResult :: STRING)

Mode

WRITE

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 87. dbms.upgradeStatus()

Description

Report the current status of the system database sub-graph schema.

Signature

dbms.upgradeStatus() :: (status :: STRING, description :: STRING, resolution :: STRING)

Mode

READ

This procedure is not considered safe to run from multiple threads. It is therefore not supported by the parallel runtime (introduced in Neo4j 5.13). For more information, see the Cypher Manual → Parallel runtime.

Table 88. genai.vector.listEncodingProviders()

Description

Lists the available vector embedding providers.

Signature

genai.vector.listEncodingProviders() :: (name :: STRING, requiredConfigType :: STRING, optionalConfigType :: STRING, defaultConfig :: MAP)

Mode

DEFAULT

Table 89. genai.vector.encodeBatch()

Description

Encode a given batch of resources as vectors using the named provider. For each element in the given resource LIST this returns:

  • the corresponding 'index' within that LIST,

  • the original 'resource' element itself,

  • and the encoded 'vector'

Signature

genai.vector.encodeBatch(resources :: LIST<STRING>, provider :: STRING, configuration = {} :: ANY) :: (index :: INTEGER, resource :: STRING, vector :: ANY)

Mode

DEFAULT

Known issue

Procedure signatures from SHOW PROCEDURES renders the vector arguments with a type of ANY rather than the semantically correct type of LIST<INTEGER | FLOAT>. The types are still enforced as LIST<INTEGER | FLOAT>.

Table 90. tx.getMetaData()

Description

Provides attached transaction metadata.

Signature

tx.getMetaData() :: (metadata :: MAP)

Mode

DBMS

Table 91. tx.setMetaData()

Description

Attaches a map of data to the transaction. The data will be printed when listing queries, and inserted into the query log.

Signature

tx.setMetaData(data :: MAP)

Mode

DBMS