【问题标题】:Neo4j Cypher- With clause queryNeo4j Cypher - 带子句查询
【发布时间】:2021-10-30 19:23:03
【问题描述】:

我在 Neo4j 的电影数据集上做一些代码,问题是

检索恰好出演过五部电影的演员,返回演员的姓名以及该演员的电影列表。

我写了以下查询,但我没有得到结果,它显示“没有变化没有结果”

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”时结果会有所不同。

【问题讨论】:

    标签: neo4j cypher graph-databases


    【解决方案1】:

    您的第一个查询有 m, count(m),这将导致每个电影节点 m 的计数为 1。

    您可以通过从第二行中的查询返回来检查这一点:

    MATCH (a:Person)-[:ACTED_IN]->(m:Movie)
    RETURN a, m, count(m) AS numMovies
    

    解决方案是从WITH 子句中删除单独的m 变量,如第二个查询所示。

    【讨论】:

    • 太棒了!如果您对答案感到满意,请将其标记为“已接受”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多