0
votes

I'm learning Neo4j and Cypher. How do I get this to work so that the answer is just the title and the name of the director? The database is the Neo4j Movie from " Graph Academy". Here is the question: "In which (released in 1995) Films (and in what roles) has the director of "That Thing You Do" acted?"

And here is what I have so far:

MATCH (p:Person)->(m:Movie {title: 'That thing you do'})->[:ACTED_IN |DIRECTED] WITH date(m.released = 1995) RETURN m.title as Movie, p.role as Roles
1

1 Answers

0
votes

It is often helpful to break a complex query like this into steps:

Find the Movie "That Thing You Do"...

MATCH (thatthingyoudo:Movie {title: "That Thing You Do"}) 
RETURN thatthingyoudo

...find the director of that movie

MATCH (thatthingyoudo:Movie {title: "That Thing You Do"})-[:DIRECTED]-(director:Person) 
RETURN director

...find movies this director has acted in

MATCH (thatthingyoudo:Movie {title: "That Thing You Do"})-[:DIRECTED]-(director:Person)-[:ACTED_IN]-(m:Movie) 
RETURN m

...don't care about all the movies, just the ones in 1995

MATCH (thatthingyoudo:Movie {title: "That Thing You Do"})-[:DIRECTED]-(director:Person)-[:ACTED_IN]-(m:Movie {released:1995}) 
RETURN m

...finally, just extract the director's name and title of the moview and roles maybe,

MATCH (thatthingyoudo:Movie {title: "That Thing You Do"})-[:DIRECTED]-(director:Person)-[actedIn:ACTED_IN]-(m:Movie {released:1995}) 
RETURN m.title, director.name, actedIn.roles