Every query describes a pattern, and in that pattern one can have multiple starting points. A starting point is a relationship or a node where a pattern is anchored. You can either introduce starting points by id, or by index lookups. Note that trying to use an index that doesn’t exist will throw an exception.
Graph
Binding a node as a starting point is done with the node(*)
function .
Query
START n=node(1) RETURN n
The corresponding node is returned.
Try this query live. (1) {"name":"A"} (2) {"name":"B"} (3) {"name":"C"} (1)-[:KNOWS]->(2) {} (1)-[:KNOWS]->(3) {} start n=node(1) return n
Binding a relationship as a starting point is done with the relationship(*)
function, which can also be abbreviated rel(*)
.
Query
START r=relationship(0) RETURN r
The relationship with id 0
is returned.
Try this query live. (1) {"name":"A"} (2) {"name":"B"} (3) {"name":"C"} (1)-[:KNOWS]->(2) {} (1)-[:KNOWS]->(3) {} start r=relationship(0) return r
Multiple nodes are selected by listing them separated by commas.
Query
START n=node(1, 2, 3) RETURN n
This returns the nodes listed in the START
statement.
Try this query live. (1) {"name":"A"} (2) {"name":"B"} (3) {"name":"C"} (1)-[:KNOWS]->(2) {} (1)-[:KNOWS]->(3) {} start n=node(1, 2, 3) return n
To get all the nodes, use an asterisk. This can be done with relationships as well.
Query
START n=node(*) RETURN n
This query returns all the nodes in the graph.
Try this query live. (1) {"name":"A"} (2) {"name":"B"} (3) {"name":"C"} (1)-[:KNOWS]->(2) {} (1)-[:KNOWS]->(3) {} start n=node(*) return n
When the starting point can be found by using index lookups, it can be done like this: node:index-name(key = "value")
. In this example, there exists a node index named nodes
.
Query
START n=node:nodes(name = "A") RETURN n
The query returns the node indexed with the name "A
".
When the starting point can be found by using index lookups, it can be done like this: relationship:index-name(key = "value")
.
Query
START r=relationship:rels(name = "Andrés") RETURN r
The relationship indexed with the name
property set to "Andrés
" is returned by the query.
When the starting point can be found by more complex Lucene queries, this is the syntax to use: node:index-name("query")
.This allows you to write more advanced index queries.
Query
START n=node:nodes("name:A") RETURN n
The node indexed with name "A" is returned by the query.
Sometimes you want to bind multiple starting points. Just list them separated by commas.
Query
START a=node(1), b=node(2) RETURN a,b
Both the nodes A
and the B
are returned.
Try this query live. (1) {"name":"A"} (2) {"name":"B"} (3) {"name":"C"} (1)-[:KNOWS]->(2) {} (1)-[:KNOWS]->(3) {} start a=node(1), b=node(2) return a,b
Copyright © 2012 Neo Technology