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.
START
is optional. If you do not specify explicit start points, Cypher will try and infer start points from your
query. This is done based on node labels and predicates contained in your query.
Additionally, you can use index hints with the USING
clause to help Cypher pick an index to use to find start points.
Binding a node as a starting point is done with the node(*)
function.
![]() | Note |
---|---|
Neo4j reuses its internal ids when nodes and relationships are deleted, which means it’s bad practice to refer to them this way. Instead, use application generated ids. |
Query.
START n=node(1) RETURN n
The corresponding node is returned.
Binding a relationship as a starting point is done with the relationship(*)
function, which can also be abbreviated rel(*)
. See Section 14.1.1, “Node by id” for more information on Neo4j ids.
Query.
START r=relationship(0) RETURN r
The relationship with id 0
is returned.
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.
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.
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.
Copyright © 2013 Neo Technology