在 Cypher 中查找具有两个不同关系的节点
Find node having two distinct relationship in Cypher
我是 Cypher 的新手。我试图找到一个查询,该查询将使 returns 节点与其他节点具有不止一种关系。
结构请参考http://neo4j.com/docs/snapshot/images/cypher-match-graph.svg。
我正在努力寻找曾在某些电影中扮演过角色的人以及父亲。
当我在查询下方 运行 时,它给了我 0 条记录:
START n=node(*)
MATCH (n)-[r]->()
WHERE type(r)="ACTED_IN" AND type(r)="FATHER"
RETURN n,count(n);
然而,当我在 运行 下方查询时,它会生成 return 数据,但我认为这不是我想要的:
START n=node(*)
MATCH (n)-[r]->()
WHERE type(r)="ACTED_IN" OR type(r)="FATHER"
RETURN n,count(n);
所以基本上,我需要一个只获取 Charlie Sheen 的查询,因为他出演了 华尔街 电影,也是 马丁·辛
我试图按照其他人在 Cypher query to find nodes that have 3 relationships or How to retrieve the nodes with multiple relationships using cypher query or Cypher query to find nodes that have 3 relationships 中所说的进行操作,但无法理解其中的技巧:(
如有任何帮助,我们将不胜感激!
正确的查询方式是:
MATCH (p:Person)-[:ACTED_IN]->(), (p)-[:FATHER]->()
RETURN p
您正在寻找具有 ACTED_IN 关系并且(因为再次使用 p
)具有 :FATHER
关系的 :Person
节点。我在另一端使用匿名节点,因为我们对端点不感兴趣——只是它已连接这一事实很有趣。
另一种表达方式:
MATCH ()<-[:FATHER]-(p:Person)-[:ACTED_IN]->()
RETURN p
请注意,您不应再使用 START
(除非查询手动索引)。
我是 Cypher 的新手。我试图找到一个查询,该查询将使 returns 节点与其他节点具有不止一种关系。 结构请参考http://neo4j.com/docs/snapshot/images/cypher-match-graph.svg。 我正在努力寻找曾在某些电影中扮演过角色的人以及父亲。 当我在查询下方 运行 时,它给了我 0 条记录:
START n=node(*)
MATCH (n)-[r]->()
WHERE type(r)="ACTED_IN" AND type(r)="FATHER"
RETURN n,count(n);
然而,当我在 运行 下方查询时,它会生成 return 数据,但我认为这不是我想要的:
START n=node(*)
MATCH (n)-[r]->()
WHERE type(r)="ACTED_IN" OR type(r)="FATHER"
RETURN n,count(n);
所以基本上,我需要一个只获取 Charlie Sheen 的查询,因为他出演了 华尔街 电影,也是 马丁·辛
我试图按照其他人在 Cypher query to find nodes that have 3 relationships or How to retrieve the nodes with multiple relationships using cypher query or Cypher query to find nodes that have 3 relationships 中所说的进行操作,但无法理解其中的技巧:(
如有任何帮助,我们将不胜感激!
正确的查询方式是:
MATCH (p:Person)-[:ACTED_IN]->(), (p)-[:FATHER]->()
RETURN p
您正在寻找具有 ACTED_IN 关系并且(因为再次使用 p
)具有 :FATHER
关系的 :Person
节点。我在另一端使用匿名节点,因为我们对端点不感兴趣——只是它已连接这一事实很有趣。
另一种表达方式:
MATCH ()<-[:FATHER]-(p:Person)-[:ACTED_IN]->()
RETURN p
请注意,您不应再使用 START
(除非查询手动索引)。