如何找到与另一个具有相同属性的那些

时间:2017-12-10 18:38:13

标签: neo4j cypher

我只是neo4j的绿手,所以我想弄清楚的是如何获得同一年和同一个球员的球员。您可以看到以下代码:

MATCH (n:Player)-[r:APPEARANCE]->(t:Team)
WHERE t.team_id AND r.year = 
(MATCH (n:Player {player_id: 'napolmi01'})-[r:APPEARANCE]->(t:Team))
RETURN t.team_id, r.year)
RETURN n.player_id, t.team_id, r.year

但这显然不是正确的答案,那么如何修改呢? 非常感谢!

1 个答案:

答案 0 :(得分:1)

您尝试使用的代码使用Cypher尚未支持的子查询,但可以使用WITH子句表示:

MATCH (:Player {player_id: 'napolmi01'})-[r1:APPEARANCE]->(t:Team)
WITH t, r1
MATCH (n:Player)-[r2:APPEARANCE {year: r1.year}]->(t)
RETURN n.player_id, t.team_id, r2.year

此外,由于不涉及聚合,您只需使用不带WITH子句的查询:

MATCH (:Player {player_id: 'napolmi01'})-[r1:APPEARANCE]->(t:Team)
  <-[r2:APPEARANCE]->(n:Player)
WHERE r1.year = r2.year
RETURN n.player_id, t.team_id, r1.year

更新。如果您有重复的结果,请使用RETURN DISTINCT n.player_id, t.team_id, r1.year