Neo4j:返回集合中不存在的节点

时间:2017-04-27 20:06:50

标签: neo4j cypher

我试图回答这个问题:我的数据库中的哪些演员与凯文·培根不在12度范围内。我尝试做的是从凯文培根收集12度以内的所有演员,并从数据库中的演员总数中减去它们。不幸的是,我做错了,因为实际上没有减法,结果返回的数量实际上增加了。我正在使用此数据库:https://neo4j.com/developer/movie-database/

这是我的代码:

MATCH shortestPath((connectingActor:Actor)-[:ACTS_IN*1..24]-(bacon:Actor {name: 'Kevin Bacon'})) 
WHERE connectingActor <> bacon 
WITH collect(DISTINCT connectingActor) as connectingActors  
MATCH (actors:Actor) 
WHERE connectingActors <> actors 
RETURN DISTINCT actors.name

1 个答案:

答案 0 :(得分:0)

你很亲密。问题出在你的RETURN之前的WHERE子句中。

您当前的WHERE子句正在比较:Actor节点到您的connectingActors列表,并且由于节点永远不是列表,否则:Actors将被过滤。

您需要测试列表中的成员资格:

 ...
 WHERE NOT actors in connectingActors
 ...