2014-09-01 86 views
0

无法撰写查询以设置导演的平均评分。Neo4j,Cypher:根据他/她的电影设置导演的平均评分

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

董事的平均等级= AVG(其所有的电影评级)

例子查询

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

请大家帮帮忙。

+0

添加您的需求明确, 也 SET a.avg_rating = AVG(toFloat(COLLECT(b.total_weight))) 这里b在查询中的任何地方都没有定义。 添加有关您的结构和您的要求的详细信息 – 2014-09-01 14:57:01

+0

已更新。对不起,这些错误。 – 2014-09-01 15:27:09

+1

这很详细 – 2014-09-01 17:03:16

回答

2

的toFloat将直接适用于m.rating和AVG不需要收集:

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

(我也放弃了多余的匹配d:导演,其中有没有然而,与你的错误)

2

你可以直接使用

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