【问题标题】:cypher: not possible to access variables declared before the WITH/RETURN密码:无法访问在 WITH/RETURN 之前声明的变量
【发布时间】:2022-11-01 14:39:07
【问题描述】:

我有一个 neo4j 数据库,其中有以下关系:

(:journal)<-[:BELONGS_TO_JOURNAL]-(:article)
(:person)-[:WROTE]->(article)

我想执行一个查询,以查找属于拥有最多文章的期刊的文章的作者,其中那些文章的文章数量最多。

以下查询给出了文章数量最多的期刊:

match (j:journal)-[:BELONGS_TO_JOURNAL]-()

返回 j.name, 计数(*)作为文章计数 按文章排序Count desc limit 1

我想到了另一个查询来找到请求:

match (j:journal)-[:BELONGS_TO_JOURNAL]-()
with j as j, count(*) as articlesCount
match (j)<-[:BELONGS_TO_JOURNAL]-(a:article)<-[:WROTE]-(p:person)
return p, count(*) as authorsCount order by articlesCount, authorsCount limit 1

但它会带来问题,因为articlesCount 不能在返回中使用,因为使用了count()

有什么建议么?

【问题讨论】:

    标签: neo4j cypher aggregation


    【解决方案1】:

    您可以简单地找到文章数量最多的作者,如下所示:

    MATCH (j:journal)-[:BELONGS_TO_JOURNAL]-(a:article)<-[:WROTE]-(p:person)
    RETURN p, count(a) as articlesCount 
    ORDER BY articlesCount DESC
    LIMIT 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 2021-05-22
      • 2020-01-15
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      相关资源
      最近更新 更多