User-defined functions

User-defined functions are written in Java, deployed into the database and are called in the same way as any other Cypher® function.

There are two main types of functions that can be developed and used:

Type Description Usage Developing

Scalar

For each row the function takes parameters and returns a result.

Using UDF

Extending Neo4j (UDF)

Aggregating

Consumes many rows and produces an aggregated result.

Using aggregating UDF

Extending Neo4j (Aggregating UDF)

User-defined scalar functions

For each incoming row the function takes parameters and returns a single result.

For developing and deploying user-defined functions in Neo4j, see Extending Neo4j → User-defined functions.

Example 1. Call a user-defined function

This example shows how you invoke a user-defined function called join from Cypher.

This calls the user-defined function org.neo4j.procedure.example.join().

Query
MATCH (n:Member)
RETURN org.neo4j.function.example.join(collect(n.name)) AS members
Table 1. Result
members

"John,Paul,George,Ringo"

Rows: 1

User-defined aggregation functions

Aggregating functions consume many rows and produces a single aggregated result.

Example 2. Call a user-defined aggregation function

This example shows how you invoke a user-defined aggregation function called longestString from Cypher.

This calls the user-defined function org.neo4j.function.example.longestString().

Query
MATCH (n:Member)
RETURN org.neo4j.function.example.longestString(n.name) AS member
Table 2. Result
member

"George"

Rows: 1