Если у вас есть произвольное количество действующих лиц (параметризованных), где вы не можете жестко закодировать рассматриваемые узлы: Person, вместо этого вы можете сопоставить узлы: Person с их именами в списке параметров, а затем выполнить фильтрацию на основе количестванайденных шаблонов (необходимо убедиться, что все люди, которые участвовали в фильме, были учтены).
Но если мы сделаем это сначала для режиссеров, то у нас уже есть несколько совпадений в кино, и мы можем применить предикат all()
в списке актеров, чтобы убедиться, что они все сыграли в фильме.
Предполагая два списка параметров, один для актеров, один для режиссеров:
MATCH (director:Person)-[:DIRECTED]->(m:Movie)
WHERE director.name in $directors
WITH m, count(director) as directorCount
WHERE directorCount = size($directors)
AND all(actor IN $actors WHERE (:Person {name:actor})-[:ACTED_IN]->(m))
RETURN m.title as Title