Neo4j Cypher- With 子句查询
Neo4j Cypher- With clause query
我正在 Neo4j 的电影数据集上做一些代码问题是
Retrieve the actors who have acted in exactly five movies, returning the name of the actor, and the list of movies for that actor.
我写了下面的查询,但我没有得到结果,它显示“没有更改没有结果”
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)
WITH a,m, count(m) AS numMovies
WHERE numMovies = 5
RETURN a.name,collect(m.title) AS movies
这次我为相同的语句编写此查询时,我只是在 WITH 子句中编写了“collect(m.title) AS movies”,我得到了想要的结果。
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)
WITH a, count(m) AS numMovies, collect(m.title) AS movies
WHERE numMovies = 5
RETURN a.name, movies
我的疑问是为什么当我在 RETURN 子句中写“collect(m.title) AS movies”时结果会有所不同。
您的第一个查询有 m, count(m)
,这将导致每个 Movie 节点的计数为 1 m
。
您可以通过从第二行的查询返回来检查这一点:
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)
RETURN a, m, count(m) AS numMovies
解决方案是从 WITH
子句中删除单独的 m
变量,如第二个查询所示。
我正在 Neo4j 的电影数据集上做一些代码问题是
Retrieve the actors who have acted in exactly five movies, returning the name of the actor, and the list of movies for that actor.
我写了下面的查询,但我没有得到结果,它显示“没有更改没有结果”
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)
WITH a,m, count(m) AS numMovies
WHERE numMovies = 5
RETURN a.name,collect(m.title) AS movies
这次我为相同的语句编写此查询时,我只是在 WITH 子句中编写了“collect(m.title) AS movies”,我得到了想要的结果。
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)
WITH a, count(m) AS numMovies, collect(m.title) AS movies
WHERE numMovies = 5
RETURN a.name, movies
我的疑问是为什么当我在 RETURN 子句中写“collect(m.title) AS movies”时结果会有所不同。
您的第一个查询有 m, count(m)
,这将导致每个 Movie 节点的计数为 1 m
。
您可以通过从第二行的查询返回来检查这一点:
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)
RETURN a, m, count(m) AS numMovies
解决方案是从 WITH
子句中删除单独的 m
变量,如第二个查询所示。