Neo4j,Cypher:根据他/她的电影设定导演的平均等级

时间:2014-09-01 11:38:01

标签: neo4j cypher

无法编写查询以设置导演的平均评级。

另外,在这种情况下,无法弄清楚如何使用FOREACH来避免Invalid use of aggregating functionType mismatch: expected Collection<T> but was Node错误。

导演的平均等级=平均(所有电影的等级)

示例查询

MATCH (d:Director)
WITH d
MATCH (d)-[:Directed]->(m:Movie)
SET d.avg_rating = AVG(toFloat(COLLECT(m.rating)))

请帮忙。

2 个答案:

答案 0 :(得分:2)

toFloat将直接应用于m.rating,AVG不需要COLLECT:

MATCH (d:Director)-[:Directed]->(m:Movie)
SET d.avg_rating = AVG(toFloat(m.rating))

(我还放弃了多余的匹配d:Director,但这与你的错误无关)

答案 1 :(得分:2)

您可以直接使用

MATCH (d:Director)-[:Directed]->(m:Movie)
SET d.avg_rating = AVG(toFloat(m.rating))