Neo4j Reduce 关系函数
Neo4j Reduce function on relationships
我有一个数据库,其中包含通过关系连接到游戏的玩家。该关系有一个属性 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
我不确定它是否正确,但我无法测试它,因为我收到错误
Type mismatch: expected Collection but was Relationship (line 3,
column 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
我有一个数据库,其中包含通过关系连接到游戏的玩家。该关系有一个属性 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
我不确定它是否正确,但我无法测试它,因为我收到错误
Type mismatch: expected Collection but was Relationship (line 3, column 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