【问题标题】:I need to count the number of connection between two nodes with a certain property我需要计算具有特定属性的两个节点之间的连接数
【发布时间】:2017-01-29 14:47:00
【问题描述】:

我的数据库包含有关学院奖提名的信息。

我想知道有多少导演不止一次获得奥斯卡“最佳导演”奖。

我无法得到我想要的结果,即被提名人名单。 我最接近的是这个查询:

MATCH (n:Nominee)-[n1:NOMINATED]->(c:Category)
WHERE c.name="Best Director" AND n1.win=true
RETURN count(n1.win), n.name
ORDER BY n.name;

wich 返回导演的姓名和他们赢得奥斯卡奖的次数。

我试图做类似的事情

MATCH (n:Nominee)-[n1:NOMINATED]->(c:Category)
WHERE c.name="Best Director" AND n1.win=true AND count(n1.win)>1
RETURN n.name;

但有一个错误提示

在此上下文中无效使用聚合函数 count(...)(行 2,第 50 列(偏移量:96))“WHERE c.name="Best Director" AND n1.win=true AND count(n1.win)>1"

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: neo4j cypher graph-databases


    【解决方案1】:

    首先使用WITH 汇总获胜结果。根据文档:

    [...] WITH 用于引入聚合,然后可以在 WHERE 的谓词中使用。这些聚合表达式在结果中创建新的绑定。 WITH 也可以像 RETURN 一样,使用别名作为绑定名称引入结果中的别名表达式。

    所以这样的查询应该可以工作:

    MATCH (n:Nominee)-[n1:NOMINATED]->(c:Category)
    WHERE c.name="Best Director" AND n1.win=true
    WITH n, count(n1.win) AS winCount
    WHERE winCount > 1
    RETURN n.name;
    

    另请参阅WHERE 上的文档:

    WHERE 为 MATCH 或 OPTIONAL MATCH 子句中的模式添加约束或过滤 WITH 子句的结果。

    【讨论】:

      猜你喜欢
      • 2018-02-14
      • 2013-06-06
      • 2023-04-02
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多