Neo4j - 不在查询中

Jac*_*ack 5 neo4j graph-databases cypher

我有的图表架构是(actors)-[:ACTED_IN]->(movies).

我知道如何找到与特定演员合作的演员如下:

MATCH (actor {name:"Tom Hanks"} )-[:ACTED_IN]->(movies)<-[:ACTED_IN]-(costars) return distinct costars;

我知道如何找到所有在某部电影中工作的演员: MATCH (all_actor)-[:ACTED_IN]->(movies) return distinct all_actor;

但是我不知道如何找到不在costars中的所有演员.我该怎么办呢?

Mic*_*ger 7

由于您想从全局actor列表中扣除coactors,这不是最好的图形查询,这里有一些建议.

// Max de Marzi
MATCH (actor:Actor {name:"Tom Hanks"})-[:ACTED_IN]->(movie), (other:Actor)
WHERE NOT (movie)<-[:ACTED_IN]-(other)
RETURN other

// Wes Freeman
MATCH (actor:Actor {name:"Tom Hanks"}), (other:Actor)
WHERE NOT (actor)-[:ACTED_IN]->()<-[:ACTED_IN]-(other)
RETURN other


// Michael Hunger
MATCH (actor:Actor {name:"Tom Hanks"} )-[:ACTED_IN]->(movies)<-[:ACTED_IN]-(coactor)
WITH collect(distinct coactor) as coactors
MATCH (actor:Actor)
WHERE NOT actor IN coactors
RETURN actor
Run Code Online (Sandbox Code Playgroud)

  • 我认为"哪个演员不是合作者"是对的.我错了吗?你的版本不适用迈克尔 (5认同)
  • `列表中没有东西'也适合我.谢谢@Gondil (2认同)