cancel
Showing results for
Did you mean:

## Cypher query Node

I have many person nodes with a name property. I have one relationship "likes".

What is the query for "Who are the persons that like Ed but do not like (have no relationship with) Alice, Bob, Charlie, and Dan?"

1 ACCEPTED SOLUTION  Ninja

try this:

match(p:Person)-[:LIKES]->(:Person{name: ‘Ed’})

where not exist ((p)-[:LIKES]->(:Person{name: ‘Alice’}))

and not exist ((p)-[:LIKES]->(:Person{name: ‘Bob’}))

and not exist ((p)-[:LIKES]->(:Person{name: ‘Charli’}))

and not exist ((p)-[:LIKES]->(:Person{name: ‘Dan’}))

return p.name as person

Same query with a little fancier notation:

with [“Alice”, “Bob”, “Dan”, “Charlie”] as names

match(p:Person)-[:LIKES]->(:Person{name: “Ed”})

where none( x in names where exists ((p)-[:LIKES]->(:Person{name: x})))

return p.name as person  Ninja

try this:

match(p:Person)-[:LIKES]->(:Person{name: ‘Ed’})

where not exist ((p)-[:LIKES]->(:Person{name: ‘Alice’}))

and not exist ((p)-[:LIKES]->(:Person{name: ‘Bob’}))

and not exist ((p)-[:LIKES]->(:Person{name: ‘Charli’}))

and not exist ((p)-[:LIKES]->(:Person{name: ‘Dan’}))

return p.name as person

Same query with a little fancier notation:

with [“Alice”, “Bob”, “Dan”, “Charlie”] as names

match(p:Person)-[:LIKES]->(:Person{name: “Ed”})

where none( x in names where exists ((p)-[:LIKES]->(:Person{name: x})))

return p.name as person  