Query parameters

The following examples illustrate how to use parameters when executing Cypher queries from Java.

For more information on parameters, see the Neo4j Cypher Manual.

Node ID:
Map<String,Object> params = new HashMap<>();
params.put( "id", 0 );

String query =
    "MATCH (n)" + "\n" +
    "WHERE id(n) = $id" + "\n" +
    "RETURN n.name";

Result result = transaction.execute( query, params );
Node object:
Map<String,Object> params = new HashMap<>();
params.put( "node", bobNode );

String query =
    "MATCH (n:Person)" + "\n" +
    "WHERE n = $node" + "\n" +
    "RETURN n.name";

Result result = transaction.execute( query, params );
Multiple node IDs:
Map<String,Object> params = new HashMap<>();
params.put( "ids", asList( 0, 1, 2 ) );

String query =
    "MATCH (n)" + "\n" +
    "WHERE id(n) IN $ids" + "\n" +
    "RETURN n.name";

Result result = transaction.execute( query, params );
String literal:
Map<String,Object> params = new HashMap<>();
params.put( "name", "Johan" );

String query =
    "MATCH (n:Person)" + "\n" +
    "WHERE n.name = $name" + "\n" +
    "RETURN n";

Result result = transaction.execute( query, params );
Numeric parameters for SKIP and LIMIT:
Map<String,Object> params = new HashMap<>();
params.put( "s", 1 );
params.put( "l", 1 );

String query =
    "MATCH (n:Person)" + "\n" +
    "RETURN n.name" + "\n" +
    "SKIP $s" + "\n" +
    "LIMIT $l";

Result result = transaction.execute( query, params );
Regular expression:
Map<String,Object> params = new HashMap<>();
params.put( "regex", ".*h.*" );

String query =
    "MATCH (n:Person)" + "\n" +
    "WHERE n.name =~ $regex" + "\n" +
    "RETURN n.name";

Result result = transaction.execute( query, params );
Create a node with properties:
Map<String,Object> props = new HashMap<>();
props.put( "name", "Andy" );
props.put( "position", "Developer" );

Map<String,Object> params = new HashMap<>();
params.put( "props", props );

String query = "CREATE ($props)";

transaction.execute( query, params );
Create multiple nodes with properties:
Map<String,Object> n1 = new HashMap<>();
n1.put( "name", "Andy" );
n1.put( "position", "Developer" );
n1.put( "awesome", true );

Map<String,Object> n2 = new HashMap<>();
n2.put( "name", "Michael" );
n2.put( "position", "Developer" );
n2.put( "children", 3 );

Map<String,Object> params = new HashMap<>();
List<Map<String,Object>> maps = asList( n1, n2 );
params.put( "props", maps );

String query =
    "UNWIND $props AS properties" + "\n" +
    "CREATE (n:Person)" + "\n" +
    "SET n = properties" + "\n" +
    "RETURN n";

Result result = transaction.execute( query, params );
Setting all properties on a node:
Map<String, Object> n1 = new HashMap<>();
n1.put( "name", "Andy" );
n1.put( "position", "Developer" );

Map<String, Object> params = new HashMap<>();
params.put( "props", n1 );

String query =
    "MATCH (n:Person)" + "\n" +
    "WHERE n.name = 'Michaela'" + "\n" +
    "SET n = $props";

transaction.execute( query, params );