我是Cypher的新手。我试图找到一个查询,它将返回与其他节点有多个关系的节点。 有关结构,请参阅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);
然而,当我在查询下面运行时,它会返回数据,但我认为这不是我想要的:
START n=node(*)
MATCH (n)-[r]->()
WHERE type(r)="ACTED_IN" OR type(r)="FATHER"
RETURN n,count(n);
所以基本上,我需要一个只能获取 Charlie Sheen 的查询,因为他演的是华尔街电影,也是 Martin Sheen的父亲
我试图关注其他人在Cypher query to find nodes that have 3 relationships或How to retrieve the nodes with multiple relationships using cypher query或Cypher query to find nodes that have 3 relationships中所说的内容,但却无法理解这个伎俩:(
任何帮助都会非常感激!
答案 0 :(得分:2)
查询此问题的正确方法是:
MATCH (p:Person)-[:ACTED_IN]->(), (p)-[:FATHER]->()
RETURN p
您正在寻找具有和{ACTED_IN关系的:Person
节点,并且(因为再次使用p
)具有:FATHER
关系。我在另一端使用匿名节点,因为我们对端点不感兴趣 - 只是它连接的事实很有趣。
另一种表达方式:
MATCH ()<-[:FATHER]-(p:Person)-[:ACTED_IN]->()
RETURN p
请注意,您不应再使用START
(除非查询手动索引)。