I have 2 nodes: (A), (B), connected by [:FRIEND]
When I run the following command,
start n = node(*) match (n)-[r:FRIEND]-(b) return n.name, b.name;
it returns 2 rows: A, B and B, A.
I wonder, how to make it return only one record, because the relationship is bidirectional, A -[:FRIEND]-B and B-[:FRIEND]-A is considered same result.
Thanks.
One trick is to add a where
on the IDs, so you get them in a consistent order as well:
start n = node(*)
match (n)-[r:FRIEND]-(b)
where id(n) < id(b)
return n.name, b.name;
http://console.neo4j.org/r/1ry0ga
If you have multiple relationships between them (in both directions, for example), you can add a distinct modifier to get the same results:
start n = node(*)
match (n)-[r:FRIEND]-(b)
where id(n) < id(b)
return distinct n.name, b.name;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With