我想展示所有表演和导演电影的人。如果该人执导电影但不参演电影,这并不重要。只要节点上存在边 ACTED_IN 和 DIRECTED,查询就会显示结果。
我尝试了几个 Cypher 查询。我相信这显示了我想要的最接近的结果:
MATCH (p:Person)-[:ACTED_IN]->(m:Movie)
WHERE exists( (p)-[:DIRECTED]->() )
RETURN distinct *
现在的问题是,其中一个结果显示“詹姆斯·编码(marshal)”出演了《好男人》,但他还导演了两部不同的电影,即《忍者刺客》和《V字仇杀队》。
我当前的结果仅显示“詹姆斯·编码(marshal)”在《好男人》中的表演,而不显示他导演的其他两部电影。那么,我该如何改进我的 Cypher?
最佳答案
您可以首先匹配具有所需关系的人员(这将是一个程度检查),然后同时使用这两种关系对模式进行匹配(否则这将是对相关关系的 OR 匹配):
MATCH (p:Person)
WHERE (p)-[:ACTED_IN]->() AND (p)-[:DIRECTED->()
MATCH path = (p)-[:ACTED_IN | DIRECTED]->(m:Movie)
RETURN path
关于Neo4j:查找出演和导演任何电影的人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56497380/