2014-01-17 3 views
1

Графическая схема у меня есть (actors)-[:ACTED_IN]->(movies).Neo4j - НЕ В запросе

Я знаю, как найти актеров, которые работали с конкретным актером, как показано ниже:

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

Я знаю, как найти все актеры, которые работали в каком-то фильме: MATCH (all_actor)-[:ACTED_IN]->(movies) return distinct all_actor;

Однако я не знаю, как найти всех актеров не в планах. Как мне это сделать?

+0

Вы хотите найти всех актеров (во всем наборе данных), которые не снялись в фильме с Томом Хэнксом? –

ответ

3

Как вы хотите вычесть координаторы из глобального списка участников, это не лучший запрос графа, вот несколько советов.

// 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 
+0

NOT IN не работает для меня. однако использование <> дало мне желаемый результат – Jack

+5

Я думаю, что «ГДЕ НЕАКТОРЫ IN coactors» верны. Я ошибаюсь? Ваша версия не работает Michael – Gondil

+0

'WHERE NOT thing IN list' тоже работал на меня. Спасибо @Gondil – Merrick

Смежные вопросы