Neo4j - Return a Pseudo relationship from a cypher

301 Views Asked by At

In Neo4j you can return a pseudo node (e.g. return {Name:'dummy node'} return a node with property Name) pretty easily. I use this extensively to check the number of nodes created with Load CSV.

How do you return a pseudo relationship? I want to see the number of relationship that will be created as a result of my merge query without actually changing the underlying the data.

I tried multiple ways and all are failing:

return {Name:'dummy node'}-->{Name:'dummy node2'}`;
Neo.ClientError.Statement.SyntaxError
Invalid input '>': expected 0..9, '.', UnsignedHexInteger, UnsignedOctalInteger or UnsignedDecimalInteger (line 1, column 29 (offset: 28))
"return {Name:'dummy node'}-->{Name:'dummy node2'}"
return ({Name:'dummy node'}-->{Name:'dummy node2'});
Neo.ClientError.Statement.SyntaxError
Invalid input '>': expected 0..9, '.', UnsignedHexInteger, UnsignedOctalInteger or UnsignedDecimalInteger (line 1, column 30 (offset: 29))
"return ({Name:'dummy node'}-->{Name:'dummy node2'})"
return {{Name:'dummy node'}-->{Name:'dummy node2'}};
Neo.ClientError.Statement.SyntaxError
Invalid input '{': expected whitespace, an identifier, UnsignedDecimalInteger, a property key name or '}' (line 1, column 9 (offset: 8))
"return {{Name:'dummy node'}-->{Name:'dummy node2'}}"
1

There are 1 best solutions below

1
On BEST ANSWER

With the APOC plugin, you can create virtual nodes and relationships that do not actually exist in the DB.

For example:

CALL apoc.create.vNode(['Node1'], {name: 'dummy node 1'}) YIELD node AS a
CALL apoc.create.vNode(['Node2'], {name: 'dummy node 2'}) YIELD node AS b
CALL apoc.create.vRelationship(a, 'FOO', {}, b) YIELD rel
RETURN a, b, rel

By the way, {Name:'dummy node'} is just a property map -- not a node.