Neo4j减少关系的功能

时间:2015-01-07 15:16:32

标签: neo4j cypher

我有一个数据库,让玩家通过关系连接到游戏。这个关系有一个属性playtimeTwoWeeks,我想用它来了解每个游戏玩了多少时间。

所以我有这个查询

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

我看到了其他一些例子,看起来我做的是正确的,但我无法弄清楚查询有什么问题。

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

这个怎么样?

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