In the RETURN
part of your query, you define which parts of the pattern you are
interested in. It can be nodes, relationships, or properties on these.
Graph
To return a node, list it in the RETURN
statemenet.
Query
START n=node(2) RETURN n
The example will return the node.
Try this query live. (1) {"age":55,"happy":"Yes!","name":"A"} (2) {"name":"B"} (1)-[:KNOWS]->(2) {} (1)-[:BLOCKS]->(2) {} start n=node(2) return n
To return a relationship, just include it in the RETURN
list.
Query
START n=node(1) MATCH (n)-[r:KNOWS]->(c) RETURN r
The relationship is returned by the example.
Try this query live. (1) {"age":55,"happy":"Yes!","name":"A"} (2) {"name":"B"} (1)-[:KNOWS]->(2) {} (1)-[:BLOCKS]->(2) {} start n=node(1) match (n)-[r:KNOWS]->(c) return r
To return a property, use the dot separator, like this:
Query
START n=node(1) RETURN n.name
The value of the property name
gets returned.
Try this query live. (1) {"age":55,"happy":"Yes!","name":"A"} (2) {"name":"B"} (1)-[:KNOWS]->(2) {} (1)-[:BLOCKS]->(2) {} start n=node(1) return n.name
When you want to return all nodes, relationships and paths found in a query, you can use the *
symbol.
Query
START a=node(1) MATCH p=a-[r]->b RETURN *
This returns the two nodes, the relationship and the path used in the query.
Result
a | b | r | p |
---|---|---|---|
2 rows | |||
0 ms | |||
|
|
|
|
|
|
|
|
Try this query live. (1) {"age":55,"happy":"Yes!","name":"A"} (2) {"name":"B"} (1)-[:KNOWS]->(2) {} (1)-[:BLOCKS]->(2) {} start a=node(1) match p=a-[r]->b return *
To introduce a placeholder that is made up of characters that are
outside of the english alphabet, you can use the `
to enclose the identifier, like this:
Query
START `This isn't a common identifier`=node(1) RETURN `This isn't a common identifier`.happy
The node indexed with name "A" is returned
Try this query live. (1) {"age":55,"happy":"Yes!","name":"A"} (2) {"name":"B"} (1)-[:KNOWS]->(2) {} (1)-[:BLOCKS]->(2) {} start `This isn't a common identifier`=node(1) return `This isn't a common identifier`.happy
If the name of the column should be different from the expression used, you can rename it by using AS
<new name>.
Query
START a=node(1) RETURN a.age AS SomethingTotallyDifferent
Returns the age property of a node, but renames the column.
Try this query live. (1) {"age":55,"happy":"Yes!","name":"A"} (2) {"name":"B"} (1)-[:KNOWS]->(2) {} (1)-[:BLOCKS]->(2) {} start a=node(1) return a.age AS SomethingTotallyDifferent
If a property might or might not be there, you can select it optionally by adding a questionmark to the identifier, like this:
Query
START n=node(1, 2) RETURN n.age?
This example returns the age when the node has that property, or null
if the property is not there.
Try this query live. (1) {"age":55,"happy":"Yes!","name":"A"} (2) {"name":"B"} (1)-[:KNOWS]->(2) {} (1)-[:BLOCKS]->(2) {} start n=node(1, 2) return n.age?
DISTINCT
retrieves only unique rows depending on the columns that have been selected to output.
Query
START a=node(1) MATCH (a)-->(b) RETURN distinct b
The node named B is returned by the query, but only once.
Try this query live. (1) {"age":55,"happy":"Yes!","name":"A"} (2) {"name":"B"} (1)-[:KNOWS]->(2) {} (1)-[:BLOCKS]->(2) {} start a=node(1) match (a)-->(b) return distinct b
Copyright © 2012 Neo Technology