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