Neo4j关系上的Reduce函数

Neo4j关系上的Reduce函数,neo4j,cypher,Neo4j,Cypher,我有一个数据库,玩家通过关系连接到游戏。这个关系有一个属性playtimetoweeks,我想用它来找出每个游戏被任何用户玩了多少时间 所以我有这个疑问 MATCH (n:Player)-[p:PLAYS]-(g:Game) WITH n, p, g RETURN g, REDUCE(playtime = 0, play IN p | playtime + play.playtimeTwoWeeks) AS total_playtime 我不确定它是否正确,但我无法测试它,因为我得到了错误 类

我有一个数据库,玩家通过关系连接到游戏。这个关系有一个属性playtimetoweeks,我想用它来找出每个游戏被任何用户玩了多少时间

所以我有这个疑问

MATCH (n:Player)-[p:PLAYS]-(g:Game)
WITH n, p, g
RETURN g, REDUCE(playtime = 0, play IN p | playtime + play.playtimeTwoWeeks) AS total_playtime
我不确定它是否正确,但我无法测试它,因为我得到了错误

类型不匹配:应为集合,但为关系(第3行, 第40栏)

指向p

我看到了一些其他的例子,看起来我做的是对的,但是我不知道查询出了什么问题。

这是怎么回事

MATCH (n:Player)-[p:PLAYS]-(g:Game)
WITH n, collect(p) AS plays, g
RETURN g, REDUCE(playtime = 0, play IN plays | playtime + play.playtimeTwoWeeks) AS total_playtime

我认为您不需要使用
WITH
子句。我想你可以这样做:

MATCH (n:Player)-[p:PLAYS]-(g:Game) 
RETURN g, SUM(p.playtimeTwoWeeks) as total_playtime

谢谢,COLLECT()是我一直在寻找的函数。如果您使用这样的可变长度路径,则p是rel的集合:
MATCH(n:Player)-[p:PLAYS*]-(g:Game)