Neo4j 和 Cypher

Neo4j and Cypher

我正在学习 Neo4j 和 Cypher。我如何让它工作,以便答案只是标题和导演的名字?该数据库是来自“Graph Academy”的 Neo4j Movie。这是问题: “《你做的事》的导演在哪些(1995 年上映)电影(以及扮演什么角色)中出演?

这是我目前的情况:

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

将像这样的复杂查询分解成几个步骤通常很有帮助:

查找电影“你做的事”...

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

...找到那部电影的导演

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

...查找该导演演过的电影

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

...不关心所有电影,只关心 1995 年的电影

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

...最后,只提取导演姓名和电影名称以及角色,

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