Returning properties from nodes and relationship in a path

Hello! I'm very new to Neo4j, and this might be a very simple question.
However: I'm currently working on a project where I need a query that returns properties from both nodes and relationships in a path.

What I currently have:

MATCH (p1:Node { UniversalId: '00000000-0c00-090e-0001-060f0e030f0b' }) 
MATCH (p2:Node { UniversalId: '00000000-0c00-090e-0001-0700000a0c06' }) 
CALL apoc.algo.dijkstra(p1, p2, 'AVSTAND>', 'cost_algo') YIELD path, weight 
return path

Which yields me the following graph: (6 nodes, 5 relationships)


I would like a way to return properties from both of the nodes between a relationship, as well as from the relationship.
Example:
╒════════════════╀════════════════╀═════════╀══════════╕
β”‚"a.name".................................β”‚"b.name" .............................. β”‚"rel.dir".............β”‚"rel.cost"..............β”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•ͺ════════════════β•ͺ═════════β•ͺ══════════║
β”‚"name1".................................β”‚ "bname1"............................. β”‚"right" ...............β”‚"1" ........................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"name2" ................................β”‚"bname2"...............................β”‚"left"..................β”‚ "10".....................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"name3" ............................... β”‚"bname3"...............................β”‚"right"...............β”‚"100".....................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"name4" ............................... β”‚"bname4"...............................β”‚"left"..................β”‚"100".....................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"name5" ............................... β”‚"bname5"...............................β”‚"left"..................β”‚"100".....................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€

I have tried the following which almost gives me what I want, but it also returns

MATCH (p1:Node { UniversalId: '00000000-0c00-090e-0001-060f0e030f0b' }) 
MATCH (p2:Node { UniversalId: '00000000-0c00-090e-0001-0700000a0c06' }) 
CALL apoc.algo.dijkstra(p1, p2, 'AVSTAND>', 'cost_algo') YIELD path, weight 
unwind  relationships(path) as rel
match (a)-[rel]-(b)
return a.name,b.name,rel.dir, rel.cost

This however yields me some extra rows which are other relationships between the nodes a and b which isn't in the path given by the dijkstra algorithm.
Res: (Got 10 rows back, expected 5 because there is 5 relationships in the path)
╒════════════════╀════════════════╀═════════╀══════════╕
β”‚"a.name".................................β”‚"b.name"................................β”‚"rel.dir"..............β”‚"rel.cost"..............β”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•ͺ════════════════β•ͺ═════════β•ͺ══════════║
β”‚"Hemberget Test"................β”‚"Astrakan Test" ..................β”‚"right" ..............β”‚"1" .........................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"Astrakan Test" ...................β”‚"Hemberget Test"...............β”‚"right" ..............β”‚"1"..........................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"Astrakan Test"....................β”‚"Astrakan Test"....................β”‚"right" ..............β”‚"1"..........................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"Astrakan Test"....................β”‚"Astrakan Test"....................β”‚"right" ..............β”‚"1"..........................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"Astrakan Test"....................β”‚"Astrakan Test"....................β”‚"right" ..............β”‚"1.1"......................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"Astrakan Test"....................β”‚"Astrakan Test"....................β”‚"right" ..............β”‚"1.1"......................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"Astrakan Test"....................β”‚"Astrakan Test"....................β”‚"right" ..............β”‚"1"..........................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"Astrakan Test"....................β”‚"Astrakan Test"....................β”‚"right" ..............β”‚"1"..........................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"Astrakan Test"....................β”‚"Astrakan Test"....................β”‚"right" ..............β”‚"1"..........................β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚"Astrakan Test"....................β”‚"Astrakan Test"....................β”‚"right" ..............β”‚"1"..........................β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
I hope I made myself understandable, thank you in advanced! :slight_smile:

Relationships allow you to access the start and end nodes, so you don't need to match to get them. Try this:

MATCH (p1:Node { UniversalId: '00000000-0c00-090e-0001-060f0e030f0b' }) 
MATCH (p2:Node { UniversalId: '00000000-0c00-090e-0001-0700000a0c06' }) 
CALL apoc.algo.dijkstra(p1, p2, 'AVSTAND>', 'cost_algo') YIELD path, weight 
unwind  relationships(path) as rel
with startNode(rel) as a, endNode(rel) as b, rel
return a.name,b.name,rel.dir, rel.cost

That is exactly what I was looking for! Thank you so much! :)