我需要计算具有特定属性的两个节点之间的连接数

时间:2017-01-29 14:47:00

标签: neo4j cypher graph-databases

我的数据库包含有关accademy奖项提名的信息。

我想知道有多少导演多次赢得“最佳导演”的奥斯卡奖。

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

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;

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

我尝试做类似

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

但是出现了错误

  

在此上下文中使用聚合函数计数(...)无效(行   2,第50栏(偏移:96))“WHERE c.name =”最佳导演“AND   n1.win = true AND count(n1.win)> 1“

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

使用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子句的结果。