返回演员和电影,其中不由特定导演导演,但在其他电影中与该导演合作。Cypher(neo4j)

返回演员和电影,其中不由特定导演导演,但在其他电影中与该导演合作。Cypher(neo4j),neo4j,cypher,Neo4j,Cypher,例如: 下面的查询将返回与Lana Wachowski合作最多的10位参与者 MATCH (actor:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(lana:Person {name: 'Lana Wachowski'}) RETURN actor.name , COUNT(m), collect(m.title) ORDER by COUNT(m) desc LIMIT 10 匹配(演员:人)-[:扮演]->(m:电影)(m:电影)

例如:

下面的查询将返回与Lana Wachowski合作最多的10位参与者

MATCH (actor:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(lana:Person {name:  'Lana Wachowski'})
RETURN actor.name , COUNT(m), collect(m.title)
ORDER by COUNT(m) desc
LIMIT 10
匹配(演员:人)-[:扮演]->(m:电影)(m:电影)(其他:电影)
与演员,其他

如果不存在((lana)-[:DIRECTED]->(other:Movie)似乎最终只需传递m变量,就可以再次使用它对返回进行排序

MATCH (actor:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(lana:Person {name:  'Lana Wachowski'}),
(actor:Person)-[:ACTED_IN]->(other:Movie)
WITH actor, m, other
WHERE NOT EXISTS((lana)-[:DIRECTED]->(other:Movie)<-[:ACTED_IN]-(actor))
RETURN actor.name , other.title, COUNT(m)
ORDER BY COUNT(m) desc
LIMIT 10
匹配(演员:人)-[:扮演]->(m:电影)(其他:电影)
和演员m,其他
不存在的地方((拉娜)-[:导演]->(其他:电影)(m:电影)(其他:电影)
和演员m,其他

如果不存在((lana)-[:DIRECTED]->(其他:Movie)您可以收集在lana导演的电影中扮演的演员。 然后,为每个演员,获得电影和收集导演。 检查该组控制器中是否没有lana。 然后收集这些电影的标题,并按电影的数量进行排序

因此,所有由拉娜执导的演员和其他非拉娜执导的电影都是汤姆·汉克斯(云图)、基努(矩阵)、本·迈尔斯(极速赛车)、雨果(云图和矩阵)和雨(极速赛车)


你能给我们举一个结果的例子吗?
MATCH (actor:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(lana:Person {name:  'Lana Wachowski'}),
(actor:Person)-[:ACTED_IN]->(other:Movie)
WITH actor, m, other
WHERE NOT EXISTS((lana)-[:DIRECTED]->(other:Movie)<-[:ACTED_IN]-(actor))
RETURN actor.name , other.title, COUNT(m)
ORDER BY COUNT(m) desc
LIMIT 10
MATCH (actor:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(lana:Person {name:  'Lana Wachowski'}),
(actor:Person)-[:ACTED_IN]->(other:Movie)
WITH actor, m, other
WHERE NOT EXISTS((lana)-[:DIRECTED]->(other:Movie)<-[:ACTED_IN]-(actor))
RETURN DISTINCT actor.name , collect(other.title), COUNT(m)
ORDER BY COUNT(m) desc
LIMIT 10
WITH [(a:Person)-[:ACTED_IN]->(:Movie)<-[:DIRECTED]-(:Person {name: 'Lana Wachowski'})|a] as actors
UNWIND actors as actor
MATCH (actor)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(p:Person)
WITH actor, m, collect(p) as directors WHERE NOT ANY (d in directors WHERE d.name = 'Lana Wachowski')
RETURN actor.name , collect(m.title), COUNT(m)
ORDER BY COUNT(m) desc
LIMIT 10
╒══════════════╤══════════════════════════════════════════════════════════════════════╤══════════╕
│"actor.name"  │"collect(m.title)"                                                    │"COUNT(m)"│
╞══════════════╪══════════════════════════════════════════════════════════════════════╪══════════╡
│"Tom Hanks"   │["Apollo 13","You've Got Mail","A League of Their Own","Joe Versus the│11        │
│              │ Volcano","That Thing You Do","The Da Vinci Code","Cast Away","The Gre│          │
│              │en Mile","Sleepless in Seattle","The Polar Express","Charlie Wilson's │          │
│              │War"]                                                                 │          │
├──────────────┼──────────────────────────────────────────────────────────────────────┼──────────┤
│"Keanu Reeves"│["Something's Gotta Give","The Replacements","Johnny Mnemonic","The De│4         │
│              │vil's Advocate"]                                                      │          │
├──────────────┼──────────────────────────────────────────────────────────────────────┼──────────┤
│"Ben Miles"   │["Ninja Assassin","V for Vendetta"]                                   │2         │
├──────────────┼──────────────────────────────────────────────────────────────────────┼──────────┤
│"Hugo Weaving"│["V for Vendetta"]                                                    │1         │
├──────────────┼──────────────────────────────────────────────────────────────────────┼──────────┤
│"Rain"        │["Ninja Assassin"]                                                    │1         │
└──────────────┴──────────────────────────────────────────────────────────────────────┴──────────┘