After having mentioned RETURN in the tutorial on Cyper's MATCH, let's see what exactly it can do for us. This will not be a long post.

As usual, let’s examine what its counterpart can be in SQL. In this case it is definitely SELECT, however RETURN is a bit simpler. Putting that aside, the most important visual difference between them is that in Cypher you end a query with RETURN while in SQL you start one with SELECT. But in both cases, you use them to define what you want to return from your query. In its simplest form you can return everything:

MATCH (wineRegion:WineRegion)-[r]->(otherNode),
RETURN *


Most of the times, you will return nodes and/or relationships:

MATCH (wineRegion:WineRegion)-[r]->(grape:Grape)
RETURN wineRegion

MATCH ()-[relationship:GROWS_AT]->()
RETURN relationship

MATCH (grape:Grape)-[relationship:GROWS_AT]->(subregion:SubRegion)
RETURN grape, relationship, subregion


As you can see if you want to return multiple elements, it’s really easy, you can just list the elements separated by commas.

If you don’t want to return the whole node, just a single property, it’s also really easy. You specify the name of the property after the node/relationship name separated by a dot:

MATCH (wineRegion:WineRegion)
RETURN wineRegion.name


This is what we more or less already saw in the MATCH tutorial. Now let’s see what else we can do.

It is worth to mention that we can return strings including special characters and we can also use variable names with a space inside. All we have to do is to put that string/variable name within \’s.

MATCH (wine Region:WineRegion)
RETURN wine Region.name


In SQL for a nicer, sometimes more meaningful visualization of results you can name the columns you want to return. In other terms, you can define an alias for each column using the AS keyword. Nothing fancy here, you can do the same in Cypher. If you want to use a one-word alias you just simply write it after the AS keyword.

MATCH (wineRegion:WineRegion)
RETURN wineRegion.name AS WineRegionName


If you want to use a nicer description, you have to use \-s around the alias, just for returning any uncommon character as mentioned before.

MATCH (wineRegion:WineRegion)
RETURN wineRegion.name AS Wine region's name


In certain cases, you might not be sure whether a certain property is there or not. It’s not a problem. You can still select it and you will not have to face any nasty errors. If the property is not there, you will have a null.

Just like in SQL, also in Cypher there is a DISTINCT keyword. With it you can return only unique rows from your query. Do you remember Eger which is both the name of a region and a subregion? If you query them without specifying the label, just mentioning the name itself and you return only the name, instead of two rows, only one will be returned.

MATCH (n)
WHERE n.name = "Eger"
RETURN DISTINCT n.name


The same can be done with relationships too. However there is something you can do with relationships, but not with nodes. To return their types. As we already it’s possible to return relationships without specifying their type or direction. In this case from the RETURN clause using type() function you can get their type:

MATCH (region:WineRegion{name:'Eger'})-[rel:CONTAINS]->(subregion:WineSubRegion)
RETURN region, subregion, rel, type(rel)


Let’s not forget that we can put some logic into our RETURN. We can use it to decide if a wine region is “big” for example. Here big means that it has more than 3 subregions.

MATCH (wine Region:WineRegion)-[]-(subregion:WineSubRegion)
RETURN distinct wine Region, count(subregion) > 3 as Is it a big region


The result will be this on my dataset:

“wine Region” “Is it a big region”
{“name”:”Eger”} false
{“name”:”Sopron”} false
{“name”:”Pannon”} true
{“name”:”Duna”} false
{“name”:”Észak-Dunántúl”} true
{“name”:”Tokaj”} false
{“name”:”Balaton”} true

But I could even list those relationships, but it’s a bit hard to read the result:

MATCH (wine region:WineRegion)-[]-(subregion:WineSubRegion)
RETURN distinct wine region, count(subregion) > 3 as Is it a big region, (wine region)-[]-(subregion)

“wine region” “Is it a big region” ”(wine region)-[]-(subregion)”
{“name”:”Sopron”} false [{“start”:{“identity”:5,”labels”:[“WineRegion”],”properties”:{“name”:”
Sopron”}},”end”:{“identity”:27,”labels”:[“WineSubRegion”],”properties”
:{“name”:”Sopron”}},”segments”:[{“start”:{“identity”:5,”labels”:[“Wine
Region”],”properties”:{“name”:”Sopron”}},”relationship”:{“identity”:20
,”start”:5,”end”:27,”type”:”CONTAINS”,”properties”:{}},”end”:{“identit
y”:27,”labels”:[“WineSubRegion”],”properties”:{“name”:”Sopron”}}}],”le
ngth”:1}]
{“name”:”Pannon”} false [{“start”:{“identity”:4,”labels”:[“WineRegion”],”properties”:{“name”:”
Pannon”}},”end”:{“identity”:25,”labels”:[“WineSubRegion”],”properties”
:{“name”:”Tolna”}},”segments”:[{“start”:{“identity”:4,”labels”:[“WineR
egion”],”properties”:{“name”:”Pannon”}},”relationship”:{“identity”:18,
“start”:4,”end”:25,”type”:”CONTAINS”,”properties”:{}},”end”:{“identity
“:25,”labels”:[“WineSubRegion”],”properties”:{“name”:”Tolna”}}}],”leng
th”:1}]
{“name”:”Balaton”} false [{“start”:{“identity”:0,”labels”:[“WineRegion”],”properties”:{“name”:”
Balaton”}},”end”:{“identity”:9,”labels”:[“WineSubRegion”],”properties”
:{“name”:”Balaton-felvidék”}},”segments”:[{“start”:{“identity”:0,”labe
ls”:[“WineRegion”],”properties”:{“name”:”Balaton”}},”relationship”:{“i
dentity”:2,”start”:0,”end”:9,”type”:”CONTAINS”,”properties”:{}},”end”:
{“identity”:9,”labels”:[“WineSubRegion”],”properties”:{“name”:”Balaton
-felvidék”}}}],”length”:1}]
{“name”:”Pannon”} false [{“start”:{“identity”:4,”labels”:[“WineRegion”],”properties”:{“name”:”
Pannon”}},”end”:{“identity”:23,”labels”:[“WineSubRegion”],”properties”
:{“name”:”Pécs”}},”segments”:[{“start”:{“identity”:4,”labels”:[“WineRe
gion”],”properties”:{“name”:”Pannon”}},”relationship”:{“identity”:16,”
start”:4,”end”:23,”type”:”CONTAINS”,”properties”:{}},”end”:{“identity”
:23,”labels”:[“WineSubRegion”],”properties”:{“name”:”Pécs”}}}],”length
“:1}]
{“name”:”Balaton”} false [{“start”:{“identity”:0,”labels”:[“WineRegion”],”properties”:{“name”:”
Balaton”}},”end”:{“identity”:11,”labels”:[“WineSubRegion”],”properties
”:{“name”:”Nagy-Somló”}},”segments”:[{“start”:{“identity”:0,”labels”:[
“WineRegion”],”properties”:{“name”:”Balaton”}},”relationship”:{“identi
ty”:4,”start”:0,”end”:11,”type”:”CONTAINS”,”properties”:{}},”end”:{“id
entity”:11,”labels”:[“WineSubRegion”],”properties”:{“name”:”Nagy-Somló
”}}}],”length”:1}]
{“name”:”Pannon”} false [{“start”:{“identity”:4,”labels”:[“WineRegion”],”properties”:{“name”:”
Pannon”}},”end”:{“identity”:26,”labels”:[“WineSubRegion”],”properties”
:{“name”:”Villány”}},”segments”:[{“start”:{“identity”:4,”labels”:[“Win
eRegion”],”properties”:{“name”:”Pannon”}},”relationship”:{“identity”:1
9,”start”:4,”end”:26,”type”:”CONTAINS”,”properties”:{}},”end”:{“identi
ty”:26,”labels”:[“WineSubRegion”],”properties”:{“name”:”Villány”}}}],”
length”:1}]
{“name”:”Balaton”} false [{“start”:{“identity”:0,”labels”:[“WineRegion”],”properties”:{“name”:”
Balaton”}},”end”:{“identity”:8,”labels”:[“WineSubRegion”],”properties”
:{“name”:”Balatonboglár”}},”segments”:[{“start”:{“identity”:0,”labels”
:[“WineRegion”],”properties”:{“name”:”Balaton”}},”relationship”:{“iden
tity”:1,”start”:0,”end”:8,”type”:”CONTAINS”,”properties”:{}},”end”:{“i
dentity”:8,”labels”:[“WineSubRegion”],”properties”:{“name”:”Balatonbog
lár”}}}],”length”:1}]
{“name”:”Eger”} false [{“start”:{“identity”:2,”labels”:[“WineRegion”],”properties”:{“name”:”
Eger”}},”end”:{“identity”:16,”labels”:[“WineSubRegion”],”properties”:{
“name”:”Bükk”}},”segments”:[{“start”:{“identity”:2,”labels”:[“WineRegi
on”],”properties”:{“name”:”Eger”}},”relationship”:{“identity”:9,”start
“:2,”end”:16,”type”:”CONTAINS”,”properties”:{}},”end”:{“identity”:16,”
labels”:[“WineSubRegion”],”properties”:{“name”:”Bükk”}}}],”length”:1}]
{“name”:”Duna”} false [{“start”:{“identity”:1,”labels”:[“WineRegion”],”properties”:{“name”:”
Duna”}},”end”:{“identity”:13,”labels”:[“WineSubRegion”],”properties”:{
“name”:”Csongrád”}},”segments”:[{“start”:{“identity”:1,”labels”:[“Wine
Region”],”properties”:{“name”:”Duna”}},”relationship”:{“identity”:6,”s
tart”:1,”end”:13,”type”:”CONTAINS”,”properties”:{}},”end”:{“identity”:
13,”labels”:[“WineSubRegion”],”properties”:{“name”:”Csongrád”}}}],”len
gth”:1}]
{“name”:”Észak-Dunántúl”} false [{“start”:{“identity”:3,”labels”:[“WineRegion”],”properties”:{“name”:”
Észak-Dunántúl”}},”end”:{“identity”:22,”labels”:[“WineSubRegion”],”pro
perties”:{“name”:”Pannonhalma”}},”segments”:[{“start”:{“identity”:3,”l
abels”:[“WineRegion”],”properties”:{“name”:”Észak-Dunántúl”}},”relatio
nship”:{“identity”:15,”start”:3,”end”:22,”type”:”CONTAINS”,”properties
”:{}},”end”:{“identity”:22,”labels”:[“WineSubRegion”],”properties”:{“n
ame”:”Pannonhalma”}}}],”length”:1}]
{“name”:”Balaton”} false [{“start”:{“identity”:0,”labels”:[“WineRegion”],”properties”:{“name”:”
Balaton”}},”end”:{“identity”:10,”labels”:[“WineSubRegion”],”properties
”:{“name”:”Balatonfüred-Csopak”}},”segments”:[{“start”:{“identity”:0,”
labels”:[“WineRegion”],”properties”:{“name”:”Balaton”}},”relationship”
:{“identity”:3,”start”:0,”end”:10,”type”:”CONTAINS”,”properties”:{}},”
end”:{“identity”:10,”labels”:[“WineSubRegion”],”properties”:{“name”:”B
alatonfüred-Csopak”}}}],”length”:1}]
{“name”:”Észak-Dunántúl”} false [{“start”:{“identity”:3,”labels”:[“WineRegion”],”properties”:{“name”:”
Észak-Dunántúl”}},”end”:{“identity”:20,”labels”:[“WineSubRegion”],”pro
perties”:{“name”:”Mór”}},”segments”:[{“start”:{“identity”:3,”labels”:[
“WineRegion”],”properties”:{“name”:”Észak-Dunántúl”}},”relationship”:{
“identity”:13,”start”:3,”end”:20,”type”:”CONTAINS”,”properties”:{}},”e
nd”:{“identity”:20,”labels”:[“WineSubRegion”],”properties”:{“name”:”Mó
r”}}}],”length”:1}]
{“name”:”Pannon”} false [{“start”:{“identity”:4,”labels”:[“WineRegion”],”properties”:{“name”:”
Pannon”}},”end”:{“identity”:24,”labels”:[“WineSubRegion”],”properties”
:{“name”:”Szekszárd”}},”segments”:[{“start”:{“identity”:4,”labels”:[“W
ineRegion”],”properties”:{“name”:”Pannon”}},”relationship”:{“identity”
:17,”start”:4,”end”:24,”type”:”CONTAINS”,”properties”:{}},”end”:{“iden
tity”:24,”labels”:[“WineSubRegion”],”properties”:{“name”:”Szekszárd”}}
}],”length”:1}]
{“name”:”Eger”} false [{“start”:{“identity”:2,”labels”:[“WineRegion”],”properties”:{“name”:”
Eger”}},”end”:{“identity”:18,”labels”:[“WineSubRegion”],”properties”:{
“name”:”Mátra”}},”segments”:[{“start”:{“identity”:2,”labels”:[“WineReg
ion”],”properties”:{“name”:”Eger”}},”relationship”:{“identity”:11,”sta
rt”:2,”end”:18,”type”:”CONTAINS”,”properties”:{}},”end”:{“identity”:18
,”labels”:[“WineSubRegion”],”properties”:{“name”:”Mátra”}}}],”length”:
1}]
{“name”:”Eger”} false [{“start”:{“identity”:2,”labels”:[“WineRegion”],”properties”:{“name”:”
Eger”}},”end”:{“identity”:17,”labels”:[“WineSubRegion”],”properties”:{
“name”:”Eger”}},”segments”:[{“start”:{“identity”:2,”labels”:[“WineRegi
on”],”properties”:{“name”:”Eger”}},”relationship”:{“identity”:10,”star
t”:2,”end”:17,”type”:”CONTAINS”,”properties”:{}},”end”:{“identity”:17,
“labels”:[“WineSubRegion”],”properties”:{“name”:”Eger”}}}],”length”:1}
]
{“name”:”Balaton”} false [{“start”:{“identity”:0,”labels”:[“WineRegion”],”properties”:{“name”:”
Balaton”}},”end”:{“identity”:12,”labels”:[“WineSubRegion”],”properties
”:{“name”:”Zala”}},”segments”:[{“start”:{“identity”:0,”labels”:[“WineR
egion”],”properties”:{“name”:”Balaton”}},”relationship”:{“identity”:5,
“start”:0,”end”:12,”type”:”CONTAINS”,”properties”:{}},”end”:{“identity
“:12,”labels”:[“WineSubRegion”],”properties”:{“name”:”Zala”}}}],”lengt
h”:1}]
{“name”:”Duna”} false [{“start”:{“identity”:1,”labels”:[“WineRegion”],”properties”:{“name”:”
Duna”}},”end”:{“identity”:15,”labels”:[“WineSubRegion”],”properties”:{
“name”:”Kunság”}},”segments”:[{“start”:{“identity”:1,”labels”:[“WineRe
gion”],”properties”:{“name”:”Duna”}},”relationship”:{“identity”:8,”sta
rt”:1,”end”:15,”type”:”CONTAINS”,”properties”:{}},”end”:{“identity”:15
,”labels”:[“WineSubRegion”],”properties”:{“name”:”Kunság”}}}],”length”
:1}]
{“name”:”Észak-Dunántúl”} false [{“start”:{“identity”:3,”labels”:[“WineRegion”],”properties”:{“name”:”
Észak-Dunántúl”}},”end”:{“identity”:21,”labels”:[“WineSubRegion”],”pro
perties”:{“name”:”Neszmély”}},”segments”:[{“start”:{“identity”:3,”labe
ls”:[“WineRegion”],”properties”:{“name”:”Észak-Dunántúl”}},”relationsh
ip”:{“identity”:14,”start”:3,”end”:21,”type”:”CONTAINS”,”properties”:{
}},”end”:{“identity”:21,”labels”:[“WineSubRegion”],”properties”:{“name
”:”Neszmély”}}}],”length”:1}]
{“name”:”Észak-Dunántúl”} false [{“start”:{“identity”:3,”labels”:[“WineRegion”],”properties”:{“name”:”
Észak-Dunántúl”}},”end”:{“identity”:19,”labels”:[“WineSubRegion”],”pro
perties”:{“name”:”Etyek-Buda”}},”segments”:[{“start”:{“identity”:3,”la
bels”:[“WineRegion”],”properties”:{“name”:”Észak-Dunántúl”}},”relation
ship”:{“identity”:12,”start”:3,”end”:19,”type”:”CONTAINS”,”properties”
:{}},”end”:{“identity”:19,”labels”:[“WineSubRegion”],”properties”:{“na
me”:”Etyek-Buda”}}}],”length”:1}]
{“name”:”Tokaj”} false [{“start”:{“identity”:6,”labels”:[“WineRegion”],”properties”:{“name”:”
Tokaj”}},”end”:{“identity”:28,”labels”:[“WineSubRegion”],”properties”:
{“name”:”Tokaj”}},”segments”:[{“start”:{“identity”:6,”labels”:[“WineRe
gion”],”properties”:{“name”:”Tokaj”}},”relationship”:{“identity”:21,”s
tart”:6,”end”:28,”type”:”CONTAINS”,”properties”:{}},”end”:{“identity”:
28,”labels”:[“WineSubRegion”],”properties”:{“name”:”Tokaj”}}}],”length
“:1}]
{“name”:”Balaton”} false [{“start”:{“identity”:0,”labels”:[“WineRegion”],”properties”:{“name”:”
Balaton”}},”end”:{“identity”:7,”labels”:[“WineSubRegion”],”properties”
ineRegion”],”properties”:{“name”:”Balaton”}},”relationship”:{“identity
“:0,”start”:0,”end”:7,”type”:”CONTAINS”,”properties”:{}},”end”:{“ident
That’s it about the RETURN I hope you enjoyed this little tutorial. Stay tuned for the next episode where we will explore the ‘MERGE’ keyword.